Ske*_*ets 2 php mysql join laravel eloquent
似乎在 Laravel Eloquent 关系可以做的所有事情中,不可能让它添加一个INNER JOIN子句。我这样做对吗?whereHas子句添加一个WHERE EXISTS子查询,with子句执行“急切加载”,它只是在单独的查询中加载关系。
显然,有很多地方的情况下INNER JOIN将是方式比运行一堆查询的效率更高,所以我写了join这些查询子句。
是否可以使用雄辩的关系来定义join子句,这样我就不必每次将 2 个表一起使用时都重写相同的连接查询?
如果不是,为什么?似乎加入 2 个相关的表应该是标准化的。我真的看不出如何添加子查询WHERE EXISTS是合适的替代品。(根据我的测试,它生成的查询速度要慢得多......)
就像@Jackowski 指出的那样,可以使用查询构建器执行连接
至于为什么 Laravel 框架使用多个查询与连接(例如加载关系),这是因为连接通常很昂贵,原因如下:
当然,连接仍然可以使用查询构建器来完成,但 Laravel 向开发人员提出了一个问题:你真的需要连接还是有其他方法?
免责声明:一般性是危险的,您应该始终考虑您的特定用例