Laravel 5.4使用计算字段进行排序,查询和显示

时间:2018-06-01 23:09:59

标签: php laravel-5.4

我是初学者Laravel程序员,刚遇到这个问题: 我有一个people表,其中包含firstNamemiddleNamelastName字段,我在getAliasByLastNameAttribute()模型中的People函数中连接了该表。 ('alias_by_last_name' = lastName, firstName middleName...)。然后,我使用以下命令将此新字段附加到People模型

protected $appends = [
    'alias_by_last_name'
];

到目前为止,这么好,我得到了我想要的东西。现在我需要在整个应用程序中使用这个计算的字段值,以便用户可以在其他相关模型表单的列表元素中看到它,在其自己的选择元素和其他相关模型中选择它,并在其上过滤查询在不同的地方的价值。如何在不将值保存到数据库的情况下执行此操作?

提前致谢。

1 个答案:

答案 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()