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