是否可以在Laravel中使用数组对表进行排序?

时间:2019-04-15 15:02:40

标签: php laravel join

我需要使用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

1 个答案:

答案 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];
    });

如果将状态添加到数据库中并刚刚创建一个关系,将会容易得多。