【问题标题】:Eloquent Relationships in laravellaravel 中的雄辩关系
【发布时间】:2018-11-12 03:45:20
【问题描述】:

我有如下三个表:

users:
id, fullname, phone ... 

tasks: 
id, user_id, title, description ...

tasks_state:
id, task_id, comment, rating, createa_at, updated_at

我正在尝试使用 laravel 中的关系在表 tasks_state 中按 updated_at 排序

Model tasks 

public function taskstate()
{
    return $this->hasOne(TaskState::class, 'task_id');
}

Model tasks_state

public function task()
{
    return $this->belongsTo(Tasks::class, 'id', 'taks_id');
}

当我使用时,我希望返回的数据按表tasks_state 中的字段updated_at 排序:

Tasks:with('taskstate')->get();

期待您的帮助:(

【问题讨论】:

标签: laravel laravel-5 relational-database relationship laravel-5.5


【解决方案1】:

像这样改变你的任务模型:

模型任务

public function taskstate()
{
    return $this->hasOne(TaskState::class, 'task_id')->orderBy('tasks_state.updated_at');
}

【讨论】:

    【解决方案2】:

    您可以在 with 子句中使用查询构建器,并通过 updated_at

    对任务状态进行排序
    Tasks:with([
               'taskstate' => function($query){
                   $query->orderBy('updated_at', 'desc');}
    ])->get();
    

    如果你想每次都用updated_at按desc顺序检索,可以参考Stack Overflow: Laravel default orderBy

    【讨论】:

    • 谢谢你@Hunterrr
    猜你喜欢
    • 1970-01-01
    • 2015-03-14
    • 2018-11-28
    • 2015-01-11
    • 2021-06-03
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多