2017-02-13 4 views
0

Я пытаюсь создать связь между двумя таблицами, используя Eloquent belongsTo, но он не работает.Laravel Eloquent принадлежитКонтакт не работает

две таблицы - документы и отделы, каждый документ относится к одному отделу.

документы

id INT 
department INT 

отделы

id INT 
name varchar(255) 

это функция, которая определяет отношения

public function department(){ 
    // department: foreign key 
    // id : departments table primary key 
    return $this->belongsTo('\App\Department' , 'department' , 'id'); 
} 

и это функция аксессор

public function getDepartmentAttribute(){ 
    return $this->department()->first()->name; 
} 

он возвращает следующее сообщение об ошибке: Undefined property: App\AjaxSearch::$department

+0

Вы уверены, что $ это модель документа? – Onix

+0

откуда вы это вызвали getDepartmentAttribute()? –

+0

из модели AjaxSearch', она использует таблицу документов. –

ответ

3

В таблице документов добавить

department_id INT Foreign 

В вашей миграции документов

$table->integer('department')->unsigned(); 

редактировать также отношения

public function department() { 
    return $this->belongsTo('App\Department', 'department'); 
} 

Update

Ok в соответствии с вашими обновлениями, вы можете получить название отдела, как этот

$doc = Document::find(1); 
$name = $doc->department->name; 
+0

Я также отредактировал отношения, но он вернул 'Попытка получить свойство ошибки, отличной от объекта' –

+0

Проверьте мои обновления, если они помогут. Иначе я попробую агиан. – EddyTheDove

+0

Все еще возвращает ту же ошибку 'Попытка получить свойство не-объекта' –

0

Вам нужно проверить, существует ли связанная с этим запись

public function department() 
{ 
    return $this->belongsTo('App\Department', 'department'); 
} 

$ документ является текущей документ запись.

$name = (empty($document->department->id) === false) ? ($document->department->name) : '';