Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.4使用计算字段进行排序、查询和显示_Php_Laravel 5.4 - Fatal编程技术网

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

Php Laravel 5.4使用计算字段进行排序、查询和显示,php,laravel-5.4,Php,Laravel 5.4,我是一名初学者Laravel程序员,刚刚遇到这个问题: 我有一个people表,其中包含firstName、middleName和lastName,我将这些字段连接到people模型中名为getAliasByLastNameAttribute()的函数中('alias\u by\u last\u name'=lastName,firstName middleName…)。然后,我使用以下方法将此新字段附加到人员模型: protected $appends = [ 'alias_by_la

我是一名初学者Laravel程序员,刚刚遇到这个问题: 我有一个
people
表,其中包含
firstName
middleName
lastName
,我将这些字段连接到
people
模型中名为
getAliasByLastNameAttribute()
的函数中<代码>('alias\u by\u last\u name'=lastName,firstName middleName…)。然后,我使用以下方法将此新字段附加到
人员
模型:

protected $appends = [
    'alias_by_last_name'
];
到目前为止,一切都很好,我得到了我想要的。现在,我需要在整个应用程序中使用这个计算出的字段值,以便用户可以在其他相关模型表单中的列表元素中看到它,在自己和其他相关模型中的选择元素中选择它,并在不同位置过滤对其值的查询。如何在不将值保存到数据库的情况下执行此操作

提前谢谢。

如果要在排序中使用连接字段,则需要在查询中对其进行连接,如:

->orderBy(DB::raw('concat(firstName,“,middleName,”,lastName))

要不干燥,可以在模型中定义它:

class人员扩展模型{
公共静态函数别名(){
返回DB::raw('concat(firstName,“,middleName,”,lastName));
}
}
然后像这样使用它:

$people=people::orderBy(people::aliasName())->get();

当然,您始终可以通过在访问者
getAliasByLastNameAttribute()
中定义的\u last\u name访问
alias\u,谢谢Daniel!我刚刚意识到,如果我使用如下查询填充select元素:$query=App\People::orderBy(alias_by_last_name)->get();我没有看到aliasByLastName位,它只是显示一个空格。相反,如果我将查询构建为:$query=App\People::all()->sortBy(aliasByLastName)->get();然后我可以正确地显示别名。我不确定到底有什么不同,但它是这样工作的。