2016-04-20 159 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