laravel - 按关系值对集合进行排序

标签 laravel eloquent nested

我想通过嵌套关系的属性对 laravel 集合进行排序。

所以我查询了所有的项目(只在项目有与当前用户相关的任务的地方),然后我想按照任务关系的截止日期对项目进行排序。

当前代码:

项目.php

public function tasks()
{
    return $this->hasMany('App\Models\ProjectTask');
}

任务文件
public function project()
{
    return $this->belongsTo('App\Models\Project');
}

用户 Controller
$projects = Project->whereHas('tasks', function($query){
        $query->where('user_id', Auth::user()->id);
    })->get()->sortBy(function($project){
        return $project->tasks()->orderby('deadline')->first(); 
    });

我不知道我是否在正确的方向上?
任何建议表示赞赏!

最佳答案

一个很好的干净的方法是使用 .运算符(operator)

$projects = Project::all()->load('tasks')->sortBy('tasks.deadline');

关于laravel - 按关系值对集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41189785/

相关文章:

javascript - AngularJS 嵌套 ng-repeats 和嵌套绑定(bind)

html - CSS 选择器(如果不为空)+ 嵌套

javascript - Laravel 资源路由从 axios 中删除

php - 在整数上调用成员函数 where()

laravel - Laravel Eloquent 多态一对一?

php - 如何比 `object` 更好地访问 `$collection[0]->object` 数据

php - Laravel 一对一关系失败

laravel - npm 被杀死或 errno 137

php - 带有 PDFtk(PHP laravel 后端)的 Azure Web 应用程序

java - 使RelativeLayout可滚动