首页 > 解决方案 > 对 "seen" 匹配 2 的结果进行排序

问题描述

我有一个包含字段 id、user_id、file_name、seen (1-2) 的故事表

Stories: id, user_id, file_name, seen

我想创建一个包含所有故事的列表,但其中看到的主要顺序对应于 2(那时仍有待看到)

我有这个简单的查询作为测试,我该怎么办?

$users = App\Models\User::whereHas('stories', function ($query) {

})->get();

标签: laravel

解决方案


您可以尝试下一个:

$users = App\Models\User::whereHas('stories')->with(['stories' => function($query) {
    $query->orderBy(DB::raw('stories.seen=2'), 'desc')
}])->get();
           

或者

$users = App\Models\User::whereHas('stories')
    ->select('*')
    ->join('stories', 'stories.user_id', '=', 'users.id')
    ->orderBy(DB::raw('stories.seen=2'), 'desc')
    ->get();

推荐阅读