簡體   English   中英

Laravel雄辯的ORM:使用belongs_to()進行一對多的麻煩

[英]Laravel Eloquent ORM: trouble with one-to-many using belongs_to()

我在Laravel中訪問關系時遇到問題。 關於這個問題,我有兩個表, messagesusers

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_fromuser_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_fromuser_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM