如何使用Laravel的查询生成器在JOIN查询中生成USING子句?

时间:2015-07-16 23:05:03

标签: php postgresql laravel join laravel-4

PostgreSQL在JOIN语句中支持USING子句,我想用它来简化我的查询。例如:

 select * from a join b using (x, y, z) where ... order by x;

如何使用Laravel的查询生成器或Eloquent表达这一点?

DB::table('a')
    ->select('*')
    ->join('b', function($join))
    ->where(...)
    ->orderBy('x');

请注意,此问题与https://stackoverflow.com/questions/31465918/how-to-generate-a-natural-join-query-with-laravels-query-builder不同,我询问的是自然加入,而不是加入使用。

另外,我知道我可以使用多个$join->on(...)语句产生几乎相同的效果,但后来我有重复的列,并且必须始终都是a和{中的质量列{1}}。也就是说,我必须写b而不是'a.x',即使它并不重要,因为连接查询确保两者都相等。 USING子句通过仅生成单个结果列'x'来巧妙地解决这个问题,知道只有这一个值。

1 个答案:

答案 0 :(得分:1)

所以,答案是 - 这是不可能的。

我在Laravel 5上继续这个问题,但它仍然是不可能的。

我的问题 - Laravel 5. Using the USING operator

我的拉取请求 - https://github.com/laravel/framework/pull/12773