Laravel订单表由不同的表列

时间:2016-06-30 12:50:13

标签: php sql laravel select eloquent

所以我有表Threads和表注释,我想通过插入一些像comments.created_at这样的最后一个注释来排序线程,我是怎么做的?

    $threads = Thread::where('subboaId', $id)
           ->orderBy('comments.created_at', 'desc')
           ->get();

尝试了这个,但没有工作,也许我必须加入他们或其他东西

2 个答案:

答案 0 :(得分:2)

使用whereHas函数(https://laravel.com/docs/5.1/eloquent-relationships):

首先,您必须在Thread模型中添加关系:

public function comments()
{
    return $this->hasMany( Comment::class );
}

然后你可以在你的控制器上使用它:

$threads = Thread::where('subboaId', $id)->whereHas( 'comments', function( $query ){
    $query->orderBy( 'created_at', 'desc' );
} )->get();

希望它有所帮助。

答案 1 :(得分:0)

加入他们,试试这个,

    $threads = Thread::join('comments', 'comments.id', '=', 'threads.comment_id')
                ->where('threads.subboaId', $id)
                ->orderBy('comments.created_at', 'desc')
                ->get();    

我希望这会有助于/带领你。