我需要使用Laravel对表进行排序,并且我有一个“ status_id”字段,在这里我无法加入另一个表,因为状态在数组中。
数组:
$statuses = [
1 => 'Active',
2 => 'Suspended',
3 => 'Inactive'
];
Laravel查询(joinArray不存在,我需要这样的东西):
Contact::select('id', 'name', 'status_id', 'status_name')
->joinArray($statuses, ['status_id'=>'status_name'])
->orderBy('status');
我需要这样的排序(按字母顺序):
* Active
* Inactive
* Suspended
但是我收到了这个消息(根据'status_id'字段):
* Active
* Suspended
* Inactive
答案 0 :(得分:0)
以下内容未经测试,但可以正常工作。
Contact::select('id', 'name', 'status_id', 'status_name')
->get()
->sortBy(function($query) {
$statuses = [
1 => 1, //Active in first position
2 => 3, //Suspended in third position
3 => 2 //Inactive in second position
];
return $statuses[$query->status_id];
});
如果将状态添加到数据库中并刚刚创建一个关系,将会容易得多。