Laravel 5.6 пытается присвоить свойство модели другому свойству модели - PullRequest
0 голосов
/ 28 июня 2018

Итак, у меня есть следующий код:

foreach($goods as &$good) {
        $good->steps = collect([]);

        $starting_steps = Step::select('id', 'availability_id', 'route_id')->get();

        foreach($starting_steps as $step) {
            $final_steps = Step::select('id', 'availability_id', 'route_id')                    ->where('availability_id', $step->availability_id)
                ->where('status', 'active')
                ->where('route_id', $step->route_id)
                ->where('id', '>', $step->id)
                ->limit(1)->get();

            if($final_steps->count()) {
                if($good->steps->isEmpty()) {
                    $good->steps = $final_steps;
                }
                else {
                    $good->steps->push($final_steps);
                }
            }
        }

        if($good->steps->count()) {
            foreach($good->steps as $step) {
                $leg = new Availabilities_goods_leg;
                $leg->availability_id = $step->availability_id;
                $leg->route_id = $step->route_id;
                $leg->good_id = $good->id;
                $leg->match = 1;
                $leg->save();
            }
        }
    }

в этой строке $leg->availability_id = $step->availability_id; Я пытаюсь сохранить availability_id, содержащийся в $step->availability_id, но я получаю следующую ошибку Property [availability_id] does not exist on this collection instance.

Если я поставлю $leg->availability_id = 4, то все работает нормально, без ошибок. Только когда я пытаюсь присвоить его с $step->availability_id, появляется ошибка. Я попытался выяснить, имеет ли $step->availability_id какое-либо значение, выполнив dd($step->availability_id), и оно имеет. Что там может быть не так?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

isset официальный документ

isset () основная функция php, которая проверяет, существует ли переменная или не существует, что означает нуль. и метод коллекции laravels проверяет, есть ли в данной коллекции элементы или нет. isEmpty laravel doc

null-> isEmpty () не мешает php выдавать ошибку, в то время как isset () делает

0 голосов
/ 28 июня 2018

Мне удалось найти ошибку, по какой-то причине, если я изменил if($good->steps->isEmpty()) на if(isset($good->steps)), это работает. Может быть, кто-нибудь найдет это полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...