У меня возникли проблемы с доступом к отношениям в Laravel. В связи с этим вопросом у меня есть две таблицы: messages
и users
.Laravel Eloquent ORM: проблема с one-to-many using own_to()
В таблице messages
выглядит следующим образом:
Messages: id, user_from, user_to, read, message, created_at, updated_at
В таблице users
выглядит следующим образом:
Users: id, email, password, name, created_at, updated_at, bio, reputation, last_login_ip, last_seen, active
В user_from
и user_to
столбцы являются Интс, которые соответствуют id
пользователя (первичного ключа) который отправил сообщение или кому было отправлено сообщение.
Соответствующая часть моей Message
модели выглядит следующим образом:
class Message extends Eloquent {
//relationships
public function user_from() {
return $this->belongs_to('User', 'user_from');
}
public function user_to() {
return $this->belongs_to('User', 'user_to');
}
}
Соответствующая часть моей User
модели выглядит следующим образом:
class User extends Eloquent {
//relationships
public function messages_from() {
return $this->has_many('Message', 'user_from');
}
public function messages_to() {
return $this->has_many('Message', 'user_to');
}
}
В представлении я пытаюсь получить доступ к пользователю который написал сообщение, написание кода, который выглядит следующим образом:
{{ $message->user_from->name }}
, который выдает ошибку Trying to get property of non-object
на этой одной строке. Я знаю, что объект $message
определен, потому что все остальные свойства, кроме user_from
и user_to
, определены и распечатываются отлично. Я читал документацию несколько раз, и я не могу понять, что я сделал неправильно здесь ... кто-нибудь торчит кому-нибудь? Это похоже на пример учебника, но он не работает.
Как я уже передал данные на зрение:
$messages = Message::where('user_to', '=', Auth::user()->id)->take(20)->get();
Чтобы уточнить, это Laravel 3. – wnajar
Итак, если вы эхо вне $ message-> user_to вы получаете хотя бы идентификатор? Cuz, тогда вы могли бы просто обойти это так ... echo (User :: find ($ message-> user_from) -> name) .... Хотя было бы неплохо, чтобы отношения работали – KyleK
Попытка этого прямо сейчас. * Редактировать: * да, эхо-сигнал '$ message-> user_from' дает мне идентификатор пользователя. Я думаю, просто не делает связи, что это соответствует модели User. Не идеальный вообще с SQL-запросом в представлении, но теперь попробуйте обходной путь ... – wnajar