Laravel模型/视图关系

时间:2016-04-20 19:58:47

标签: php mysql laravel join relationship

我正在学习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

非常感谢有关此事的任何帮助/解释。

2 个答案:

答案 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 }}