mysql - Laravel 5.3 如何进行多重连接

标签 mysql database laravel

我是 Laravel 的新手。我正在制作一个应用程序来评价电视节目的季节。我想获取每个季节的信息,包括平均评分和当前用户的个人评分。

目前我只是使用原始 MySQL 访问它。

$seasons = \DB::select('

SELECT * FROM seasons

LEFT JOIN (SELECT season_id, AVG(rating) as avg_rating FROM ratings_season 
GROUP BY season_id) t2 ON seasons.id = t2.season_id

LEFT JOIN (SELECT season_id, rating FROM ratings_season WHERE user_id = 1) t3 ON seasons.id = t3.season_id

ORDER BY seasons.number DESC');

如何使用 Laravel 关系将此原始查询转换为原始查询?

最佳答案

尝试根据自己的喜好调整此代码

DB::table('seasons')
->select('*')
->leftJoin(
    DB::raw('(SELECT season_id, AVG(rating) as avg_rating FROM ratings_season GROUP BY (season_id)
    ) as t2'), function ($join) {
        $join->on ( 'seasons.id', '=', 't2.season_id' );
    }
)
->leftJoin(
    DB::raw('(SELECT season_id, rating FROM ratings_season WHERE user_id = 1) as t3'), function ($join) {
        $join->on ( 'seasons.id', '=', 't3.season_id' );
    }
)
->orderBy('seasons.number', 'desc')
->get();

关于mysql - Laravel 5.3 如何进行多重连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41684550/

相关文章:

c# - 基于服务的数据库

php - Laravel Eloquent 查询中的 Intval 函数

mysql - 提高特定 MySQL 查询的性能

mysql - 合并同一数据库的两个版本: duplicate id errors

sql - 一次从大表中获取的最佳行大小

php - 为两个 View 使用相同数据传递参数

php - 使用队列 :work 一段时间后,Laravel 作业 "cannot connect to host"中的 SoapClient

mysql - 我的架构中是否需要第三个表

MySQL 查找列之间的差异不产生正确的输出

php - Laravel/MySQL 数据库连接