【问题标题】:Laravel 5 - DB join is returning just first table column setLaravel 5 - 数据库连接只返回第一个表列集
【发布时间】:2015-10-02 07:31:19
【问题描述】:

我有一些相关的 MySQL 表,我想获取所有这些表中的列,但是如果我尝试使用手册中的类似代码,我只能从第一个表中获取列:

$users = DB::table('users')
            ->join('contacts', 'users.id', '=', 'contacts.user_id')
            ->join('orders', 'users.id', '=', 'orders.user_id')
            ->select('users.*', 'contacts.phone', 'orders.price')
            ->get();

这将是“用户”表中的所有列,但我没有看到联系人和订单列。

【问题讨论】:

  • 该查询生成的 SQL 是 "select users.*, contacts.phone, orders.price from users inner join contacts on users.id = contacts.user_idinner join orders on users.id = orders.user_id" 所以你需要的所有列都应该返回。您可以用 toSql() 替换 get() 并查看是否得到相同的查询吗?您能否通过转储一行返回的结果来仔细检查您需要的列是否丢失?
  • @jedrzej.kurylo 你是对的,这是使用 toSql() 子句时生成的 SQL...我已经完全改变了我的底层代码,因为我必须及时交付我的程序...所以我将其更改为 2 个电话,如果可以在 1 个电话中完成,我知道这是不行的……也许我稍后会给它一个电话(所以我不会让这个电话无人接听),因为它正在工作生产与开发不同(使用 Homestead)。还是谢谢。

标签: php mysql laravel join eloquent


【解决方案1】:

试试这个

DB::table('users')->join('contacts',function($join){$join->on('users.id','=','contacts.user_id')})->join('orders',function($join){$join->on('users.id','=','orders.user_id')})->get()

【讨论】:

    猜你喜欢
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多