php - Laravel 4 查询生成器 : LEFT JOIN . .. AND ... 查询

标签 php laravel laravel-4 eloquent

我正在尝试从一个表中选择所有结果,并在用户 ID 匹配时与另一个表合并。

我有三个表:runs、users 和一个 run_user 数据透视表。我想从“运行”和数据透视表中的其他列(“已完成”、“粘性”、“最后测试”和“难度”)中选择所有结果,但只从当前用户的 run_user 中提取数据。

在原始 SQL 中,我设法通过带有 AND 语句的 LEFT JOIN 来做到这一点:

SELECT
runs.startpoint,
runs.startpostcode,
runs.endpoint,
runs.endpostcode,
run_user.completed,
run_user.sticky,
run_user.last_tested,
run_user.difficulty
FROM runs
LEFT JOIN run_user ON run_user.run_id=runs.id AND run_user.user_id = '2'

关于如何通过查询生成器执行此操作的任何建议?我可以在 Laravel 4 中执行 LEFT JOIN,但也不知道如何将它与 AND 语句结合起来。

感谢任何帮助。

谢谢!

最佳答案

按照您的要求,这就是您使用查询构建器进行查询的方式:

DB::table('runs')
        ->leftJoin('run_user', function($join)
        {
            $join->on('run_user.run_id', '=', 'runs.id')
            ->on('run_user.user_id', '=', '2');
        })
        ->get();

但是那个 JOIN 语句看起来有点奇怪,你可能想把它变成一个普通的 WHERE(除非你有一个非常具体的原因直接在 JOIN 子句中过滤)。

DB::table('runs')->join('run_user', 'run_user.run_id', '=', 'runs.id')->where('run_user.user_id', '=', '2')->get();

文档:http://laravel.com/docs/queries#joins

关于php - Laravel 4 查询生成器 : LEFT JOIN . .. AND ... 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17404743/

相关文章:

php - Laravel-按升序和降序排列记录

javascript - Laravel 中的 Ajax

php - 包含数据库完整性

php - 保存选择字段的(多个)元值

php - Laravel Guzzle 请求获取错误的数据库连接

php - 在 laravel 中加入查询

php - Laravel 与家园

php - 在 Laravel-4 中加载外部库

php - 变量字符串中的换行符

php - 基于所选月份的 CSV 文件输出