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

标签 php postgresql laravel join laravel-4

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

 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我问的是 NATURAL JOIN,而不是 JOIN USING。

此外,我知道我可以用多个 $join->on(...) 语句产生几乎相同的效果,但是我有重复的列并且必须始终限定列在 ab 中。也就是说,我必须写 'a.x' 而不是 'x' 即使这无关紧要,因为连接查询确保两者相等反正。 USING 子句巧妙地解决了这个问题,它只生成一个结果列 x,知道只有一个值。

最佳答案

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

我在Laravel 5上继续这个问题,还是不行。

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

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

关于php - 如何使用 Laravel 的查询生成器在 JOIN 查询中生成 USING 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31466007/

相关文章:

javascript - 加载更多数据 ajax PHP onscroll

php - MySQL 或 PHP : Find optimum combination of rows based on score

php - DocBlock类类型继承

sql - PostgreSQL 和队列命令

ruby-on-rails - 开发组下的 Sqlite3 但仍然出现 Heroku 部署错误

php - 将 PHP 变量分配给 SQL 结果

sql - Postgres 比较字符串与数字返回正确的结果

php - Laravel whereHas manyToMany 完全匹配

Laravel Eloquent - 使用 "With"和 "find"

php - Laravel-4.1 时间戳()问题