似乎Laravel Eloquent关系中的所有关系都可以,它不可能让它添加INNER JOIN
子句。我是否正确? whereHas
子句添加WHERE EXISTS
子查询,with
子句预先形成“急切加载”,只是在单独的查询中加载关系。
显然,很多情况下INNER JOIN
方式比运行一堆查询更有效,所以我写了一个join
子句对于这些查询。
是否可以使用雄辩的关系来定义join
子句,这样我每次使用2个表时都不必重写相同的连接查询?
如果没有,为什么?似乎加入2个相关的表将是应该标准化的东西。我真的不知道如何添加像WHERE EXISTS
这样的子查询是一个合适的替代品。 (根据我的测试,它会生成慢得多的查询....)
答案 0 :(得分:4)
就像@Jackowski指出的那样,joins can be performed using the query builder
至于为什么Laravel框架使用多个查询与连接(例如加载关系),因为连接通常是昂贵的,因为以下内容:
当然,仍然可以使用查询构建器完成连接,但是Laravel会向开发人员强制提出问题:您真的需要加入还是有其他方式?
免责声明:一般性是危险的,您应该始终考虑您的具体用例