我正在尝试从一个表中选择所有结果,并在用户ID匹配时与另一个表合并 .
我有三个表:运行,用户和run_user数据透视表 . 我想选择“运行”中的所有结果和数据透视表中的其他列(“已完成”,“粘性”,“last_tested”和“难度”),但只从当前用户的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语句结合起来 .
任何帮助表示赞赏 .
谢谢!
6 回答
Provident和用户表加入并获取所有详细信息的ID .
用这个
根据您的要求,这是您使用查询构建器进行查询的方式:
但是这个JOIN语句看起来有点奇怪,你可能想把它变成一个普通的WHERE(除非你有一个非常具体的理由直接在JOIN子句中过滤) .
文件:http://laravel.com/docs/queries#joins
如果有人想知道我在其中一个leftJoin参数上使用DB :: raw工作:
它并不像我希望的那样“雄辩”,但如果你想在LEFT JOIN中添加AND,那么这似乎是唯一的方法 .
如果有人能建议一个更整洁的方式,我很想知道!
谢谢
在Laravel 4中,您可以使用Eloquent查询执行此操作 . 我假设您了解Eloquent关系并知道创建模型 . 对于您的查询,它应该是
Note RunUser是run_user表的模型 .
这是必须的: