php-Laravel 5:替换查询结果中的字符串(雄辩的ORM)

是否可以从表中返回所有列,但是如果字符串(值)包含特定单词,请删除该单词?

例如,我有一个这样的表:

 -------------------------------------------------
| 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应该返回“ Test”.

有没有办法在Laravel(Eloquent)中做到这一点而无需使用foreach或其他工具?有内置功能吗?

这是我从中获取此数据的控制器.

返回Article :: where(‘active’,1)-> orderBy(‘create_date’,’desc’)-> get();

谢谢!

解决方法:

雄辩的查询返回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;
    });

如果希望为每个查询替换该值,则可以在“文章”模型上为此字段创建an accessor.

public function getArticleDescAttribute($value)
{
    return str_replace('ReplaceWord', '', $value)
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...