Laravel Model/View 关系

Laravel Model/View 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

我有两个模型,鸟和蛋 我只是显示数据库中可用的数据 (MySQL)。

eggs.blade.php

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

一切正常。但是我希望显示 parent (鸟)的名称而不是 ID。 (因此从示例数据中它将显示 Jeff)

我试过在模型中使用它

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

如果有任何关于此的 help/explanation,我们将不胜感激。

通过以下步骤很容易关联它 1- 在鸟模型中你必须这样做

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

2-然后在鸡蛋模型中

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

有关详细信息,请访问 Laravel Documention

希望能帮到你..

在您的 Egg 模型中,您需要像这样设置关系:

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

如果您的列是 bird_id,它会自己找到外键列,但是由于它会自动尝试附加 _id 的模型名称,所以它不知道要查找哪一列采用。但是可以直接在belongsTo().

中用第二个参数指定引用Bird主键的列

执行此操作后,您将能够像这样简单地引用关系:

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