Laravel 5:替换查询结果中的字符串(Eloquent ORM)
Laravel 5: Replace string in query results (Eloquent ORM)
是否可以 return 来自 table 的所有列,但如果字符串(值)包含特定词,则删除该词?
例如,我有这样一个table:
-------------------------------------------------
| id | article_desc | article_link | active |
|----|------------------|----------------|--------|
| 1 | Hello, world! | http://test.co | 0 |
| 2 | ReplaceWord Test | http://null.org| 1 |
-------------------------------------------------
"ReplaceWord" 应替换为 ""(无)。所以 ID 2 的 article_desc 应该 return "Test".
有没有什么方法可以在 Laravel (Eloquent) 中不使用 foreach 或其他东西来做到这一点?有内置函数吗?
这是我获取此数据的控制器。
return Article::where('active', 1)->orderBy('create_date', 'desc')->get();
谢谢!
Eloquent 查询 return 一个 Laravel 集合,因此您可以使用 map
函数遍历结果并替换字符串。
return Article::where('active', 1)
->orderBy('create_date', 'desc')
->get()
->map(function ($article) {
$article->article_desc = str_replace('ReplaceWord', '', $article->article_desc);
return $article;
});
如果您希望为每个查询替换值,您可以在 Article
模型上为此字段创建 an accessor。
public function getArticleDescAttribute($value)
{
return str_replace('ReplaceWord', '', $value)
}
是否可以 return 来自 table 的所有列,但如果字符串(值)包含特定词,则删除该词?
例如,我有这样一个table:
------------------------------------------------- | id | article_desc | article_link | active | |----|------------------|----------------|--------| | 1 | Hello, world! | http://test.co | 0 | | 2 | ReplaceWord Test | http://null.org| 1 | -------------------------------------------------
"ReplaceWord" 应替换为 ""(无)。所以 ID 2 的 article_desc 应该 return "Test".
有没有什么方法可以在 Laravel (Eloquent) 中不使用 foreach 或其他东西来做到这一点?有内置函数吗?
这是我获取此数据的控制器。
return Article::where('active', 1)->orderBy('create_date', 'desc')->get();
谢谢!
Eloquent 查询 return 一个 Laravel 集合,因此您可以使用 map
函数遍历结果并替换字符串。
return Article::where('active', 1)
->orderBy('create_date', 'desc')
->get()
->map(function ($article) {
$article->article_desc = str_replace('ReplaceWord', '', $article->article_desc);
return $article;
});
如果您希望为每个查询替换值,您可以在 Article
模型上为此字段创建 an accessor。
public function getArticleDescAttribute($value)
{
return str_replace('ReplaceWord', '', $value)
}