【问题标题】:Laravel Eloquent Relationship: How to get parent of parent information from child using Laravel eloquent model relationship?Laravel Eloquent 关系:如何使用 Laravel 雄辩模型关系从孩子那里获取父母信息的父母?
【发布时间】:2021-05-02 06:03:57
【问题描述】:

我在 Laravel 控制器中获取查询结果时遇到问题。 让我给你描述一下..

我在 Laravel 项目中有三个模型 ModelA、ModelB、ModelC。

表格如下所示:

  1. A 型表:
a_id name info
1 name1 info1
2 name2 info2
  1. B 型表:
b_id col1 a_id
1 value1 1
2 value2 1
  1. C 型表:
c_id col1 b_id
1 val_1 1
2 val_2 1

关系: ModelC 到 ModelB -> 多对一
ModelB 到 ModelA -> 多对一

我想返回带有相关 ModelA 和 ModelB 数据的 ModelC 信息,这意味着,我想获得如下数据:

data = [ 
    {
        c_id: 1,
        col1: val_1,
        b_id: 1,
        bdata: {
           b_id: 1,
           col1: value1,
           a_id: 1,
           adata: {
             a_id: 1,
             name: name1,
             info: info1,
           } 
        }
     },
     {
        c_id: 2,
        col1: val_2,
        b_id: 1,
        bdata: {
           b_id: 1,
           col1: value1,
           a_id: 1,
           adata: {
             a_id: 1,
             name: name1,
             info: info1,
           } 
        }
      }
    ]

如何定义modelA、modelC和ModelB中的关系?
以及如何在modelC控制器中编写查询来获取这样的数据?

谢谢,提前...

【问题讨论】:

  • 这是有据可查的,所以至少试一试...laravel.com/docs/8.x/eloquent-relationships 在 api 中使用请查看“with()”方法。
  • @GertB.谢谢。
  • @GertB.,我可以处理两个模型。但是这一次,它需要获取父信息的父...
  • 基本一样。如果你使用 'with' 方法,你可以使用('parent_relation.parent_parent_relation')。 (使用关系offcourse的名称)
  • 已经解决了。谢谢你的时间......

标签: php laravel rest


【解决方案1】:

问题已解决

我的解决方案:

我在 ModelC 控制器中的代码:

$data = ModelC::with('modelB')->get();

ModelB中的关系函数:

public function modelA(){
    return $this->belongsTo(ModelA::class);
}

ModelC中的关系函数:

public function modelB(){
    return $this->belongsTo(ModelB::class)->with('modelA');
}

【讨论】:

    猜你喜欢
    • 2018-06-14
    • 1970-01-01
    • 2019-07-16
    • 2021-09-20
    • 2020-12-02
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多