我正在学习Laravel并且无法理解如何解决以下问题。
我有两张桌子(当然不是数据库):)
Table: Birds
id
name
species
....
Table: Eggs
id
egg_number
parent_id
....
示例数据:
bird
id 1
name Jeff
egg
id 1
parent_id 1
我有两种型号,分别是Bird和Egg 我只是显示数据库(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
非常感谢有关此事的任何帮助/解释。
答案 0 :(得分:1)
通过做下面的步骤很容易将它关联起来 1-在Bird Model中你必须这样做
public function Eggs(){
return $this->hasMany('App\Egg');
}
2-然后在蛋模型
public function Bird(){
return $this->belongsTo('App\Bird');
}
有关详细信息,请访问Laravel Documention
希望能帮到你..答案 1 :(得分:1)
在Egg
模型中,您需要设置关系:
public function bird()
{
return $this->belongsTo(Bird::class,'parent_id');
}
如果您的列已经bird_id
,那么就会发现其上的外键列已经拥有了,因为它会自动尝试附加_id
的模型名称,但它不会知道要使用哪个列。但您可以使用Bird
中的第二个参数直接指定引用belongsTo()
主键的列。
一旦你这样做,你就可以像这样引用这种关系:
{{ $egg->bird->name }}