【问题标题】:Eloquent relationship to get grandparents, great grandparents, etc获得祖父母,曾祖父母等的口才关系
【发布时间】:2018-08-09 21:11:36
【问题描述】:

我有一个包含这些字段的“人”表:

  • 姓名
  • mother_id
  • father_id

mother_idfather_id,我存有其他Poeple ID

我有两个关系要得到父母

public function father()
{
    return $this->belongsTo(Poeple::class, 'father_id');
}

public function mother()
{
    return $this->belongsTo(Poeple::class, 'mother_id');
}

既然可以直接接父母,不知道用 Eloquent 和 Laravel 能不能找回父母的父母,祖父母的父母等等。

有关系吗?还是小费?

我不知道是否可以这样做:

  • 我看看孩子有没有父母。
  • 如果他有父母,我看看他的父母是否有祖父母
  • 以此类推(最多4个)

最后,我创建了一个包含所有这些的集合。有可能吗?

嵌套集似乎对我不起作用。我有两个父母。

谢谢

【问题讨论】:

  • 您是否考虑过查看嵌套集?
  • 在 laravel 中没有关系来做那个目录。听起来你可能想要一种叫做嵌套集的东西。 github.com/lazychaser/laravel-nestedset
  • @RossWilson 嵌套集在我的情况下不起作用,我有两个父母。不可能在每个父母中继承吗?我正在查看该项目是否为父级,如果是,我正在查看他的父级是否有另一个父级,并且我正在创建一个集合...?

标签: php laravel eloquent


【解决方案1】:

有一个简单的技巧可以实现这一点。

使用$appends

protected $appends = ['father'];


public function father()
{
    return $this->belongsTo(Poeple::class, 'father_id');
}

public function mother()
{
    return $this->belongsTo(Poeple::class, 'mother_id');
}

以上代码将为您提供每个集合的嵌套结果。

【讨论】:

  • 我不知道 $append。我找不到关于它的信息。收集所有嵌套结果真的有帮助吗?
  • @Jeremy 是的,它也会给出所有相关模型的嵌套结果
猜你喜欢
  • 1970-01-01
  • 2011-01-12
  • 1970-01-01
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多