php - 在 Laravel 5.8 中查询 eloquent
问题描述
我在 Laravel 5.8 中使用 Eloquent 进行的查询有问题,我真的不知道会发生什么。
我会解释:
我雄辩的查询是这样的:
$naviones=DB::connection('naviones')->table('ps_customer')
->select('ps_orders.id_order','ps_customer.firstname','ps_customer.lastname','ps_customer.email','ps_address.address1',
'ps_address.postcode','ps_address.city','ps_address.phone_mobile','ps_orders.id_order','ps_orders.reference',
'ps_order_detail.product_name','ps_order_detail.product_quantity','ps_shop.name as tienda','ps_carrier.name as transportista')
->join('ps_address','ps_customer.id_customer','=','ps_address.id_customer')
->join('ps_orders', function($join){
$join->on('ps_address.id_customer','=','ps_orders.id_customer')
->where('ps_address.id_address','=','ps_orders.id_address_delivery');
})
->join('ps_order_detail','ps_orders.id_order','=','ps_order_detail.id_order')
->join('ps_shop','ps_order_detail.id_shop','=','ps_shop.id_shop')
->join('ps_carrier','ps_orders.id_carrier','=','ps_carrier.id_carrier')
->where('ps_orders.id_order','=',11389)
->get();
如您所见,我正在对数据库进行此查询,该数据库不一定是应用程序使用的数据库。这个雄辩的查询转化为:
SELECT
`ps_orders`.`id_order`,
`ps_customer`.`firstname`,
`ps_customer`.`lastname`,
`ps_customer`.`email`,
`ps_address`.`address1`,
`ps_address`.`postcode`,
`ps_address`.`city`,
`ps_address`.`phone_mobile`,
`ps_orders`.`id_order`,
`ps_orders`.`reference`,
`ps_order_detail`.`product_name`,
`ps_order_detail`.`product_quantity`,
`ps_shop`.`name` AS `tienda`,
`ps_carrier`.`name` AS `transportista`
FROM
`ps_customer`
INNER JOIN `ps_address` ON `ps_customer`.`id_customer` =
`ps_address`.`id_customer`
INNER JOIN `ps_orders` ON `ps_address`.`id_customer` =
`ps_orders`.`id_customer`
AND `ps_address`.`id_address` = ps_orders.id_address_delivery
INNER JOIN `ps_order_detail` ON `ps_orders`.`id_order` =
`ps_order_detail`.`id_order`
INNER JOIN `ps_shop` ON `ps_order_detail`.`id_shop` =
`ps_shop`.`id_shop`
INNER JOIN `ps_carrier` ON `ps_orders`.`id_carrier` =
`ps_carrier`.`id_carrier`
WHERE
`ps_orders`.`id_order` = 11389
好吧,关键是,如果我接受该查询并在 Mysql 中执行它,它会为我提供我需要的信息,但是,在 eloquent 集合中,它是空的。这就是让我发疯的原因,该系列是空的。该查询是通过 eloquent 传递给我的,我如何确保它是由 eloquent 传递的?我故意在 Laravel 的一个字段中生成了一个错误,以通知我并向我展示完整的查询以检查它,这就是查询:
在红色圆圈的末尾,我显示了故意创建的错误,以查看完整的查询并查看它是否装备精良。
我不明白发生了什么,我不知道该怎么办,我有两天时间,我不知道发生了什么。
希望大家能给点思路,谢谢。
解决方案
如果你删除这个:
->join('ps_orders', function($join){
$join->on('ps_address.id_customer','=','ps_orders.id_customer')
->where('ps_address.id_address','=','ps_orders.id_address_delivery');
})
有结果吗?也许这个功能的问题。
另外,你能改变这个吗:
DB::connection('naviones')->table('ps_customer')
至
DB::table('ps_customer')
推荐阅读
- socket.io - socket.io : socket IO 客户端是否可以发出函数注册回调函数
- javascript - Trie 实现中出现错误(Javascript)
- javascript - 从 Cloud Firestore 在 MatDatepicker 中加载时间戳 | 火力基地
- sql - 选择实际身高
- python - python mallet LDA FileNotFoundError:[Errno 2] 没有这样的文件或目录:'C:\\Users\\abc\\AppData\\Local\\Temp\\d33563_state.mallet.gz'
- python - 使用初始和最终 x 值作为 x 轴和 V 作为 y 轴绘制阶跃函数
- api - 如何通过新的云项目启用高级 Google 服务?
- docker - 如何在 Kubernetes 中使用本地 docker 镜像?
- css - 当浏览器的宽度在 css 中为 600px 或以下时显示一个元素
- c++ - 基于给定字符串数据类型的链表删除节点