我正在尝试从一个表中选择所有结果,并在用户 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();
关于php - Laravel 4 查询生成器 : LEFT JOIN . .. AND ... 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17404743/