2016-04-20 216 views
0

我在學習Laravel,只是無法理解如何解決以下問題。Laravel模型/查看關係

我有兩個表(ofcourse不是數據庫):)

Table: Birds 
id 
name 
species 
.... 

Table: Eggs 
id 
egg_number 
parent_id 
.... 

樣本數據:

bird 
id 1 
name Jeff 

egg 
id 1 
parent_id 1 

我有兩個型號它們是鳥類和蛋 我只是顯示它是數據在數據庫中可用(MySQL)。

eggs.blade.php

@foreach ($eggs as $egg) 
..form data 
{{ $egg->id }} 
{{ $egg->parent_id }} 
..end of form 
@endforeach 

這工作都很好。但是我希望顯示父(鳥)的名稱而不是id。 (所以從樣本數據將顯示傑夫)

我在模型

return $this->belongsTo('Bird'); //in Egg Model 
return $this->belongsTo('Egg'); //in Bird Model 

使用這種試圖將是這方面的任何幫助/解釋真的很感激。

+1

FYI你有兩個數據庫表,而不是兩個數據庫。 – Pitchinnate

回答

1

在你Egg模型,你需要設置喜歡的關係,使:

public function bird() 
{ 
    return $this->belongsTo(Bird::class,'parent_id'); 
} 

如果你的列會一直bird_id它會發現然而它自己的外鍵列,因爲它會自動嘗試與_id追加型號名稱它不知道使用哪一列。但是您可以直接指定引用Bird主鍵的列和belongsTo()中的第二個參數。

一旦你這樣做,你將只是能夠引用,像這樣的關係:

{{ $egg->bird->name }} 
+0

謝謝你的回覆,我如何在視圖中顯示這個?我嘗試過$ egg-> bird。 – dai007uk

+0

添加到我的答案。 – Pitchinnate

+0

對啊,我現在明白了。謝謝!。 – dai007uk

1

可以很容易地關係它做波紋管步驟 1-在鳥模型,你必須做這樣的

public function Eggs(){ 
return $this->hasMany('App\Egg'); 
} 

2-然後在蛋型

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

欲瞭解更多信息,請訪問Laravel Documention

希望能幫到你..

+0

謝謝你的幫助。 – dai007uk