Невозможно получить доступ к отношению принадлежащих к Blade через `echo`, но можно через` dd` - PullRequest
0 голосов
/ 11 мая 2019

У меня очень запутанная ситуация. Мой код в шаблоне Blade выглядит так:

@foreach ($upcoming as $match)
    <?php
        dd($match->team1);
        echo $match->team1->flag_image;
    ?>
// --- snip

(тег <?php предназначен только для отладки и не является частью реального кода)

Если я запускаю этот код, dd в первой строке срабатывает, и я получаю дамп, как и ожидалось:

enter image description here

Но когда я комментирую это, следующая строка не может найти объект team1:

<?php
    //dd($match->team1);
    echo $match->team1->flag_image;
?>

В результате:

Trying to get property 'flag_image' of non-object

Из того, что я могу сказать, отношения определены правильно. Если бы они не были, первое dd не сработало бы.

Я действительно потерял дар речи, что простой echo не может загрузить отношения. Кто-нибудь сталкивался с чем-то похожим?

Ответы [ 2 ]

0 голосов
/ 19 июля 2019

Итак, мне наконец удалось отследить это.Я публикую здесь, чтобы это могло помочь кому-то еще, хотя это всего лишь случай отладки.

В моем случае не во всех матчах (называемых upcoming) были назначены соответствующие командыим.Например, для полуфиналов и финалов команды еще не были объявлены (хотя место проведения уже было объявлено), поэтому team1_id и team2_id были нулевыми в моих случаях.

Ошибка была серьезнойчтобы определить, потому что выполнение dd будет проверять только первый матч, для которого идентификаторы команды были не равны нулю.Только когда цикл обработки попадал в финальные матчи, команды были пустыми, и отношения начали выдавать ошибки.

0 голосов
/ 11 мая 2019

Возможно, у вас нет отношения team1 для вашего $ match. Следовательно, данные отношения, то есть flag_image не выходят.

  1. Сначала проверьте свою базу данных и убедитесь, что у вас есть все связанные данные.
  2. Во-вторых, этот тип случая является нормальным, т. Е. Данные отношений не найдены, и, следовательно, blade-сервер возвращает ошибку (пытается получить свойство 'flag_image' не-объекта).

Вы можете проверить, прекращаются ли отношения, а затем попытаться получить доступ к собственности. В вашем случае:

if($match->team1)
{
  echo ($match->team1->flag_image);
}

ИЛИ в клинке

 {{$match->team1?$match->team1->flag_image:'N/A'}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...