2015-05-07 7 views
0

У меня есть две таблицы:Laravel красноречивым модель отношения не работают на шаблоне лезвия

Persons 
id, name, foto_id 

и

Fotos 
id, url 

На Person модели, я добавил:

public function foto() { 
    return $this->hasOne("App\\Foto","id","foto_id"); 
} 

Обратите внимание, что мне нужно было избежать \F ...

Когда я пытаюсь {{ $person->foto->url }}, я получаю «пытается получить доступ свойство не-объекта» ошибка. Если я {{ print_r($person->foto()) }} я просто 1 ...

Я следовал Laravel документы, и это tutorial

Это проект я создаю, чтобы узнать Laravel, так что любой полезный совет ценится!

Edit:
В artisan tinker, $person->foto->url работы по назначению, возвращает Foto объект просто отлично ...

ответ

0

Вам нужно использовать функцию belongsTo вместо hasOne.
Если вы создаете модель Foto, вам понадобится функция hasMany.

Дополнительную информацию об этом можно найти на странице Laravel docs.

+0

Так что мне нужно связать отношения на обоих концах (Person 'hasOne' Foto, а Foto' ownTo' Person)? –

+0

Другой способ: модель, представляющая таблицу, которая содержит FK, использует функцию 'ownTo'. Модель, представляющая таблицу, которая содержит PK, использовала функцию 'hasOne' или' hasMany'. – Blaatpraat

+0

Это, кажется, мое недоразумение! 'Person' имеет' Foto', поэтому я помещал FK (?) Foto_id в таблицу 'Person', а таблица' Fotos' имела только поля 'id' и' url'. Итак, только Человек должен знать, что это за фотографии, и ни один из них не должен знать о том, кому они принадлежат. –

Смежные вопросы