Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 27.08.2020 16:27:30

Связанные таблицы

Коллеги, помогите разобраться.

Есть две таблицы связанные один к одному. (Users и Messages)
В блэйд вывести значение (имя автора)
$message->user->name и получаю "Trying to get property 'name' of non-object"

Теперь самое интересное:
конструкция
$message->user
вполне правильно выводит объект
{"id":1,"name":John,"email":"jonh@aol.com","message_id":1}

если поставить

@php
  dd($message->user->name)
@endphp

в тело blade - выводит имя правильно. Причем выводит и до установленного dd на странице тоже.

Кто сталкивался? В чем причина и куда копать?

Не в сети

#2 27.08.2020 17:43:39

Re: Связанные таблицы

UPD в соседнем blade все работает...

Не в сети

#3 27.08.2020 19:00:36

Re: Связанные таблицы

Если еще интересно ) то сработало с конструкцией:
{{ DB::table('users')->where('user_id','=',$user->id)->value('name') }}

Не в сети

#4 27.08.2020 21:46:54

Re: Связанные таблицы

Ну так вы посмотрите привязан ли какой либо юзер именно к этой модели мессага.

Не в сети

#5 04.09.2020 07:45:53

Re: Связанные таблицы

Да, пользователь привязан. Возможно я чего-то недопонимаю, но цикл:

@foreach($user->message() as $message)
  <p>{{ $message->body }}</p>
@endforeach

не работает (не входит даже в него). При этом цикл в этом же месте:

@foreach($user->message()->pluck('body') as $message)
  <p>{{ $message }}</p>
@endforeach

выводит все правильно (но нужны и другие данные по записи).

Поможете разобраться? (Спасибо)

Не в сети

#6 04.09.2020 11:51:41

Re: Связанные таблицы

Почитайте как пользоваться связями.
`->message()` - возвращает Builder, поэтому в цикл и не заходит
А `->message` вернет коллекцию.

p.s. писать запросы в blade - моветон

Не в сети

Подвал раздела