Laravel 集合排序数组

Laravel 集合排序数组,laravel,laravel-5.5,Laravel,Laravel 5.5,我有一个存储3个合并集合的阵列: public function answer() { $interview = Interview::find(1); $videoQuestions = $interview->VideoQuestions()->get(); foreach ($videoQuestions as $vq) { $vq->type = 'video'; }

我有一个存储3个合并集合的阵列:

public function answer() {
        $interview = Interview::find(1);

        $videoQuestions = $interview->VideoQuestions()->get();
        foreach ($videoQuestions as $vq) {
            $vq->type = 'video';
        }

        $textQuestions = $interview->TextQuestions()->get();
        foreach ($textQuestions as $tq) {
            $tq->type = 'text';
        }

        $uploadQuestions = $interview->UploadQuestions()->get();
        foreach ($uploadQuestions as $uq) {
            $uq->type = 'upload';
        }

        $questions = collect($videoQuestions);
        $questions = $questions->merge($textQuestions);
        $questions = $questions->merge($uploadQuestions);

        $questions->sortBy('order_position');
        dd($questions);
    }
->sortBy不起作用,因为我假设它在集合数组上不起作用

这就是我所拥有的:

但我真的希望它是一个合并的集合,而不是集合中的数组

每个
VideoQuestion
TextQuestion
都有一个
order\u position
字段,我想按该字段排序


感谢您的帮助

第一件事集合是一个包含元素数组的类,该数组使用特殊方法过滤排序文档:

Illumb\Support\Collection类提供了流畅、方便的 用于处理数据数组的包装器

该方法返回已排序的集合(它不适用于它所拥有的项):

所以你应该有这样的东西:

$questions = $questions->sortBy('order_position');
dd($questions);

第一件事集合是一个包含元素数组的类,该数组使用特殊方法来过滤排序文档:

Illumb\Support\Collection类提供了流畅、方便的 用于处理数据数组的包装器

该方法返回已排序的集合(它不适用于它所拥有的项):

所以你应该有这样的东西:

$questions = $questions->sortBy('order_position');
dd($questions);

这可能是另一种选择:

$interview = Interview::find(1)->with(['VideoQuestions',
                                       'TextQuestions', 
                                       'UploadQuestions', 
                                       'Questions' => function($query){
                                           $query->orderBy('order_position', 'asc');
                                       }])->get();

定义关系并制作一个表格,其中包含一个顺序位置,您可以对其进行排序,而不是对每个表格进行排序

这可能是另一种选择:

$interview = Interview::find(1)->with(['VideoQuestions',
                                       'TextQuestions', 
                                       'UploadQuestions', 
                                       'Questions' => function($query){
                                           $query->orderBy('order_position', 'asc');
                                       }])->get();

定义关系并制作一个表格,其中包含一个顺序位置,您可以对其进行排序,而不是对每个表格进行排序

太好了!我只需要更改
$questions->sortBy('order_position')
$questions=$questions->sortBy('order_position')谢谢!完美的我只需要更改
$questions->sortBy('order_position')
$questions=$questions->sortBy('order_position')谢谢!