簡體   English   中英

Laravel Eloquent Inaccessible by $ model-> id;

[英]Laravel Eloquent Inaccessible by $model->id;

我以前做了很多次,但不知怎的,我的想法一直停留在這個問題上:

$data['conversations'] = Conversation::with("sender")->received()->get();

執行{{ $conversation }}會產生:

{
    "id": "1",
    "subject": "",
    "sender": {
        "id": "4",
        "email": "jane@doe.com",
        "name": "Jane Poe",
        "group_id": "3",
        "created_at": "2014-12-22 20:31:00",
        "updated_at": "2014-12-22 20:31:00"
    },
    "receiver": "1",
    "created_at": "2015-01-04 00:00:00",
    "updated_at": "2015-01-04 00:00:00"
}

請注意,“發件人?現在{{ $conversation->sender->email }}給出:

試圖獲得非對象的屬性

當呼叫{{ $conversation->sender }}它只打印“4”(id)。

發件人存儲在名為sender的列中的對話表中。

$conversation->sender()也不起作用

這是代碼:

class Conversation extends Eloquent {

    protected $table = 'conversations';

    public function sender()
    {
        return $this->belongsTo('User','sender','id');
    }

    public function receiver()
    {
        return $this->belongsTo('User','receiver','id');
    }

}

該關系不能與外鍵 (或基本上任何列) 具有相同的名稱

只需將sender更改為sender_id 然后你甚至可以從關系聲明中刪除它,因為它是傳統的命名。

public function sender()
{
    return $this->belongsTo('User');
}

(因為id可能是User的主鍵,你也可以刪除它)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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