我是初学者Laravel程序员,刚遇到这个问题:
我有一个people
表,其中包含firstName
,middleName
和lastName
字段,我在getAliasByLastNameAttribute()
模型中的People
函数中连接了该表。 ('alias_by_last_name' = lastName, firstName middleName...)
。然后,我使用以下命令将此新字段附加到People
模型
protected $appends = [
'alias_by_last_name'
];
到目前为止,这么好,我得到了我想要的东西。现在我需要在整个应用程序中使用这个计算的字段值,以便用户可以在其他相关模型表单的列表元素中看到它,在其自己的选择元素和其他相关模型中选择它,并在其上过滤查询在不同的地方的价值。如何在不将值保存到数据库的情况下执行此操作?
提前致谢。
答案 0 :(得分:0)
如果要在排序中使用连接字段,则需要在查询中对其进行连接,例如:
->orderBy(DB::raw('concat(firstName, " ", middleName, " ", lastName)'))
要不干,您可以在模型中定义它:
class People extends Model {
public static function aliasName() {
return DB::raw('concat(firstName, " ", middleName, " ", lastName)');
}
}
然后使用它:
$people = People::orderBy(People::aliasName())->get();
当然,您始终可以访问您在访问者alias_by_last_name
中定义的getAliasByLastNameAttribute()
。