[英]Laravel Eloquent ORM: trouble with one-to-many using belongs_to()
我在Laravel中訪問關系時遇到問題。 關於這個問題,我有兩個表, messages
和users
。
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();
在Message
模型from_user()
和to_user()
而不是user_from()
和user_to()
更改方法名稱(並更改視圖以使其對應)完全解決了該問題。 沒有其他代碼被更改。
當您指定自定義字段時(我認為),Laravel會通過方法名稱獲取數據庫字段。 奇怪的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.