2015-01-05 4 views
0

Я делал это много раз и раньше, но как-то мой разум застрял на этом один:

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

Doing {{ $conversation }} производит:

{ 
    "id": "1", 
    "subject": "", 
    "sender": { 
     "id": "4", 
     "email": "[email protected]", 
     "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» (идентификатор).

отправитель хранится в разговор стол в колонке с именем отправитель.

$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'); 
    } 

} 

ответ

3

Отношение не может иметь такое же имя, как внешнего ключа (или практически любой колонке)

Просто измените sender на sender_id. Тогда вы даже можете удалить его из объявления отношений, поскольку это обычное название.

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

(И потому id, вероятно, является первичным ключом User вы можете удалить, что а)

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