Почему я не могу правильно отобразить вложенный запрос на Laravel? «Вызов функции-члена map () в null» отображается как ошибка - PullRequest
0 голосов
/ 28 марта 2020

Действительно не удалось получить нужные данные после функции карты. Я искал, чтобы получить кредит, дату от save_details и просто save_bill_number от save_bills через отношение, но теперь похоже, что я застрял в этой фатальной проблеме. Вызов функции-члена на карте показывал фатальную ошибку. Ваша помощь будет оценена.

Это отношение:

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

Вот мой логин контроллера c:

$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
        ];
    });

Это ошибка, которую я получаю. Пожалуйста, проверьте изображение на наличие ошибки.

Мне нужно отфильтровать вышеупомянутые данные отсюда.

1 Ответ

0 голосов
/ 29 марта 2020

Я не уверен, какой из этих map() на самом деле выдает ошибку, но я предполагаю, что это второй, который проходит через отношение saving_bill. В комментариях вы сказали, что saving_bill_id может быть нулевым. Если это так, то отношение также будет нулевым, и нет коллекции, предоставляющей метод map().

Проверьте нулевое значение, прежде чем предполагать, что эта переменная всегда заполнена:

$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,
        ];
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...