Ken*_*ink 4 php laravel eloquent laravel-5 laravel-5.4
是否可以从表中返回所有列,但如果字符串(值)包含特定单词,则删除该单词?
例如,我有一个这样的表:
------------------------------------------------- | 身份证 | article_desc | article_link | 活跃 | |----|------------------------|----------------|-------- | | 1 | 你好,世界!| http://test.co | 0 | | 2 | 替换词测试 | http://null.org| 1 | -------------------------------------------------
“ ReplaceWord ”应替换为“”(无)。所以 ID 2 的 article_desc 应该返回“ Test ”。
在 Laravel (Eloquent) 中有没有办法在不使用 foreach 或其他东西的情况下做到这一点?有没有内置函数?
这是我获取这些数据的控制器。
return Article::where('active', 1)->orderBy('create_date', 'desc')->get();
谢谢!
Eloquent 查询返回一个 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;
});
Run Code Online (Sandbox Code Playgroud)
如果您希望为每个查询替换该值,您可以在模型上为该字段创建一个访问器Article
。
public function getArticleDescAttribute($value)
{
return str_replace('ReplaceWord', '', $value)
}
Run Code Online (Sandbox Code Playgroud)