Laravel - получение атрибута из отношения модели в виде лезвия - PullRequest
0 голосов
/ 26 февраля 2019

Я создал отношения между продуктами и пользователями, используя внешний ключ под названием "previous_owner".Я могу видеть, когда я выкидываю значение, которое я передаю, в представление о том, что данные, которые мне нужны, доступны в:

$product->relations->product_owner->user->attributes->name

Но как мне получить к нему доступ из моего представления.Я пытаюсь просмотреть продукты, а затем сделать что-то вроде:

{{ $product->product_owner->user->name }}

или

{{ $product->product_owner->name }}

Но не работает, продолжайте получать:

«Попытка получить свойство« имя »необъекта»

SCREEN GRAB OF THE OBJECT

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019

Ваш product_owner не является stdClass.Это массив.Таким образом, вы не можете получить доступ к этому ключу этого массива с помощью оператора "->".попробуйте

{{ $product->product_owner['name'] }}
0 голосов
/ 27 февраля 2019

По вашему мнению код должен быть похож на этот

@foreach($products as $product)
    {{ $product->product_owner->name }}
@endforeach

Этот код означает, что у каждого продукта есть product_owner.Если один продукт не имеет product_owner, значение регистра $product->product_owner равно Null, а затем ваш код null->name, и вы получаете ошибку.Для исправления необходимо проверить, что отношение равно нулю, или использовать оператор ??Измените свой код на

@foreach($products as $product)
    {{ $product->product_owner->name ?? ''}}
@endforeach

или

@foreach($products as $product)
    @if($product->product_owner)
        {{ $product->product_owner->name}}
    @endif
@endforeach
0 голосов
/ 26 февраля 2019

Если name является атрибутом, а product_owner является функцией отношения, попробуйте следующее:

{{ $product->product_owner()->name }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...