我有2个表分别命名为“ genre”和“ preferred_genre”,“ preferred_genre”表中有一个外键为“ genre_id”,并且还有一个“ user_id”列,我想检索所有类型,但首先那些在“ preferred_genre”表中具有外键关系并且被登录用户偏爱的类型。
类型-> id,类型名称
preferred_genre-> id,genre_id,user_id
# genre table #
===============
id | genre_name
---------------
1 | action
2 | comedy
3 | horror
4 | drama
# preferred_genre table #
=========================
id | genre_id | user_id
------------------------
1 | 2 | 5
2 | 4 | 5
3 | 1 | 8
4 | 4 | 8
让登录的用户ID为5
$q = Genre::select('genres.*');
$q->leftJoin('preferred_genres', function($join)
{
$join->on('genres.id', '=', 'preferred_genres.genre_id');
$join->where('user_id','=',Auth::id());
});
$genre_list = $q->orderBy('preferred_genres.created_at', 'desc')->get();
我想获取所有类型,但首先要获取user_id 5首选的类型,然后是所有其他类型,如下所示
id | genre_name
----------------
2 | comedy
4 | drama
1 | action
3 | horror
答案 0 :(得分:0)
$q->orderByRaw("FIELD(preferred_genres.user_id, 5) ASC");
答案 1 :(得分:0)
$list=DB::table('genres')
->select('genres.*','preferred_genres.*')
->join('preferred_genres','genres.id', '=','preferred_genres.genre_id')
->where('genres.user_id','=',Auth::user()->id)
->orderBy('preferred_genres.created_at', 'DESC')
->get();