我想创建一个带有计算列的laravel模型。我已经看过如何在下载数据后如何做到这一点但是我希望做的计算很昂贵但可以在我的sql中作为函数访问。基本上我想在查询构建器中追加一列,但我不确定如何进行此操作。
查询需要类似于:
select *, my_function(ID) as my_value from my_table;
我需要获得一个模型实例(不是原始记录集)。
我也希望避免多次查询。
感谢。
答案 0 :(得分:5)
您的查询可能是这样的:
User::select([
'users.*',
\DB::raw('YEAR(created_at) as year')
])->get()
用您想要的任何功能替换YEAR功能。也应该附加到该列的结果。
答案 1 :(得分:0)
基于musicvicious的回答,我最终选择了:
class User extends Model
{
...
public function newQuery()
{
return parent::newQuery()->select('users.*', \DB::raw('YEAR(created_at) as year'));
}
}
现在我可以正常获取模型。
User::all();