2017-02-13 105 views
0

我試圖使用雄辯belongsTo創建兩個表之間的關係,但似乎並不奏效。Laravel雄辯歸屬關係不起作用

這兩個表是文件和部門,每個文件都屬於一個部門。

文件

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

你確定$這是一個Document模型嗎? – Onix

+0

從哪裏調用這個getDepartmentAttribute()? –

+0

從名爲'AjaxSearch'的模型中使用文檔表。 –

回答

3

在文件表中添加

department_id INT Foreign 

在你的文件遷移

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

還需要編輯關係

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

更新

確定根據您的更新,就可以得到該部門的名稱這樣

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