我有两个名为“genre”和“preferred_genre”的表,“preferred_genre”表中有一个外键为“genre_id”,它还有一个“user_id”列,我想检索所有流派,但首先那些在“preferred_genre”表中具有外键关系并且是登录用户首选的流派。
genre -> id,genre_name
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
最佳答案
$q->orderByRaw("FIELD(preferred_genres.user_id, 5) ASC");
关于mysql - 使用 Laravel 检索所有记录以及按外键排序的关系的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55914609/