簡體   English   中英

為什么我不能在 Laravel 上正確映射嵌套查詢? “在 null 上調用成員函數 map()”顯示為錯誤

[英]Why can't I properly map nested query on Laravel? "Call to a member function map() on null" shown as error

真的無法在地圖功能后獲得所需的數據。 我希望獲得信用,從 save_details 獲得的日期和從 save_bills 通過關系獲得的 save_bill_number,但現在看起來我陷入了這個致命的問題。 調用地圖上的成員函數顯示廣告致命錯誤。 您的幫助將不勝感激。

這是關系:

public function savingBill()
{
    return $this->belongsTo(SavingBill::class);
}

這是我的控制器邏輯:

$savingDetails = SavingDetail::where('date', $request->date)
    ->with('savingBill')
    ->get()
    ->map(function ($savingDetail) {
        return [
            'credit' => $savingDetail->credit,
            'date' => $savingDetail->date,
            'saving_bill' => $savingDetail
                ->saving_bill
                ->map(function ($inner) {
                    return [
                        'saving_bill_number' => $inner->saving_bill_number
                    ];
                }) // If I put an semicolon here, IDK why error would be shown, hope nothing with the semicolon
        ];
    });

這是我得到的錯誤。請檢查圖像是否有錯誤。

我需要從這里過濾上述數據。

我不確定這些map()哪一個實際上拋出了錯誤,但我想這是遍歷saving_bill關系的第二個。 你在評論中說saving_bill_id可以為空。 如果是這種情況,關系也將為空,並且沒有提供map()方法的 Collection。

在假設這個變量總是被填充之前檢查 null:

$savingDetails = SavingDetail::where('date', $request->date)
    ->with('savingBill')
    ->get()
    ->map(function ($savingDetail) {
        return [
            'credit' => $savingDetail->credit,
            'date' => $savingDetail->date,
            'saving_bill' => $savingDetail->saving_bill
                ? $savingDetail
                    ->saving_bill
                    ->map(function ($inner) {
                        return [
                            'saving_bill_number' => $inner->saving_bill_number
                        ];
                    })
                : null,
        ];
    });

暫無
暫無

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

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