mysql - 使用 Laravel 检索所有记录以及按外键排序的关系的 SQL 查询

标签 mysql laravel

我有两个名为“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/

相关文章:

laravel 5.5 计费设置较短的试用期以进行重复测试

php - laravel 获取与多个外键的关系

php - 是否有与 PHP 的 preg_replace 等效的 MySQL?

mysql - 在 MySql 中执行查询时与 only_full_group_by 相关的错误

mysql替换重音字符

php - Laravel 5.8 : How to send email after user click verify link

php - Laravel Eloquent 查询数据透视表

javascript - FullCalendar 从数据库中获取事件

Mysql-如何将一列中的所有值与另一列中的所有值合并?

mysql - 如何在查询结果中返回空值