gpt4 book ai didi

laravel - 如何在 Laravel 中使用 ->append v. protected $appends

转载 作者:行者123 更新时间:2023-12-04 14:41:48 28 4
gpt4 key购买 nike

如何将属性附加到一个查询而不是模型的所有查询。我知道您可以通过添加

来为模型中的所有查询添加属性
protected $appends = ['icon'];

public function getIconAttribute(){
return Gravatar::src($this->email, 100).'&r=g&d=mm';
}

我只想为一个查询添加它

$usernames = User::where('username', 'LIKE', '%'.$request->get('search').'%')
->append('icon')->get();

但这给出了错误Call to undefined method Illuminate\Database\Query\Builder::append()

我可以看到方法,但感觉很愚蠢 https://laravel.com/api/5.3/Illuminate/Database/Eloquent/Model.html#method_append

最佳答案

append() 方法是 Model 而不是 Builder 的一部分,因此您必须为每个模型调用它。

你可以有类似的东西:

$usernames = User::where('username', 'LIKE', '%' . $request->get('search') . '%')
->get()
->map(function ($user) {
return $user->append('icon');
});

>= Laravel 5.4

Higher Order Messaging是在 5.4 中引入的,所以你现在可以这样做:

$usernames = User::where('username', 'LIKE', '%' . $request->get('search') . '%')
->get()
->map->append('icon');

>= Laravel 7.6

append() 方法在 7.6 中被引入 Eloquent Collections:

$usernames = User::where('username', 'LIKE', '%' . $request->get('search') . '%')
->get()
->append('icon');

关于laravel - 如何在 Laravel 中使用 ->append v. protected $appends,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40349971/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com