【问题标题】:Laravel Model/View RelationshipLaravel 模型/视图关系
【发布时间】:2016-08-13 17:34:51
【问题描述】:

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

这一切正常。但是我希望显示父母(鸟)的名字而不是id。 (所以从样本数据中它会显示 Jeff)

我已经尝试在模型中使用它

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

非常感谢您对此提供任何帮助/解释。

【问题讨论】:

  • 仅供参考,您有两个数据库表,而不是两个数据库。

标签: php mysql laravel join relationship


【解决方案1】:

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

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

如果您的列是bird_id,它会自行找到外键列,但是由于它会自动尝试附加_id 的模型名称,因此它不知道要使用哪个列。但是可以直接用belongsTo()中的第二个参数指定引用Bird主键的列。

一旦你这样做了,你就可以像这样引用关系:

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

【讨论】:

  • 感谢您的回复,我将如何在视图中显示这个?。我试过 $egg->bird.
  • 已将其添加到我的答案中。
【解决方案2】:

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

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

2- 然后在 Egg 模型中

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

欲了解更多信息,请访问Laravel Documention

希望能帮到你..

【讨论】:

  • 也感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2019-04-04
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 2016-11-01
相关资源
最近更新 更多