簡體   English   中英

在 Laravel 5.8 中查詢 eloquent

[英]Query eloquent in 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();

如您所見,我正在對數據庫進行此查詢,該數據庫不一定是應用程序使用的數據庫。 該 eloquent 查詢轉換為:

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');
        })

有結果嗎? 也許這個 function 中的問題。

另外,你能改變這個嗎:

DB::connection('naviones')->table('ps_customer')

DB::table('ps_customer')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM