我有3種型號laravel雄辯排序關係
- 用戶
- 通道
- 回覆
模型關係
user
有belongsToMany('App\Channel');
channel
有hasMany('App\Reply', 'channel_id', 'id')->oldest();
比方說,我有2個通道 - 通道1 - 通道2
channel-2
比channel-1
最新回覆,現在,我想訂購用戶的通道通過其頻道的當前答覆。 就像一些聊天應用程序。 我該如何訂購用戶的頻道?
- 通道2
- 信道-1
我已經嘗試過的一些代碼。但沒有發生
// User Model
public function channels()
{
return $this->belongsToMany('App\Channel', 'channel_user')
->withPivot('is_approved')
->with(['replies'])
->orderBy('replies.created_at'); // error
}
// also
public function channels()
{
return $this->belongsToMany('App\Channel', 'channel_user')
->withPivot('is_approved')
->with(['replies' => function($qry) {
$qry->latest();
}]);
}
// but i did not get the expected result
編輯 還,我想這一點。是的,我確實得到了預期的結果,但如果沒有回覆,它不會加載所有頻道。
public function channels()
{
return $this->belongsToMany('App\Channel')
->withPivot('is_approved')
->join('replies', 'replies.channel_id', '=', 'channels.id')
->groupBy('replies.channel_id')
->orderBy('replies.created_at', 'ASC');
}
編輯:
這種情況下,更願意「加盟」而不是「與」 –
嗯,所以我不能用雄辯.. – Hitori
@kap做到這一點? il.dev嗨,我試過連接方法。並按我的預期工作。但它只會返回所有有回覆的頻道。 – Hitori