返回顶部
首页 > 问答 > 后端 > laravel 嵌套关联模型如何写
0
已解决

laravel 嵌套关联模型如何写

  • 匿名发布
  • 2023-02-23
  • 发布在 问答/后端
82

a 关联 b b 关联 c

a 和 b 是 1 对多 b 和 C 是 1 对 1

想要拉取 a 的列表里面包含 b 的列表里带着 C 的属性

试过这样写 a->with (‘b.c’)

结果 sql 报错 错误的 sql 是 select * from a where id in (c.id)

最佳答案

天下大力士

2023-02-23 18:29:55

可以参考文档里的嵌套预加载写法:

$books = Book::with('author.contacts')->get();


其他回答4

czs086

2023-02-23

应该将模型文件的关联方法发出来 


czs086

2023-02-23

Model A {
public function getB(){
return $this-hasMany(B::class,"b_id","a_id");
}
}

Model B{
public function getC(){
return $this-hasOne(C::class,"c_id","b_id");
}
}

Model C{

}

A::with("getB.getC")->paginate(10);


可可hk

2023-02-23

 模型 A 中定义
public function b(){
    return $this->hasMany(B::class);
}
 模型 B 中定义
public function c(){
    return $this->hasOne(C::class);
}
控制器
public function getA(){
    rerurn A::with('b'=>function($query){
                $query->with('c');
           })->get();
}


浅笑醉红楼

2023-05-11

Laravel的嵌套关联模型可以通过with方法来实现,具体步骤如下:

  1. 首先在模型中定义好关联关系,例如一个用户有多篇文章,一篇文章属于一个分类,可以在User模型中定义一个articles方法和在Article模型中定义一个category方法。

  2. 在控制器中使用with方法来加载关联模型,例如可以使用User::with("articles.category")来加载用户、用户的文章以及文章所属的分类。这里需要注意,关联模型的方法名需要使用点号.来分隔。

  3. 在视图中可以使用$users变量来获取已经加载好的用户数据,例如可以使用@foreach($users as $user)来遍历每个用户,然后使用$user->articles来获取该用户的所有文章,使用$article->category来获取该文章所属的分类。

这样就可以实现Laravel的嵌套关联模型了,通过with方法可以一次性加载多个关联模型,方便快捷。

相关问题
2

回答

99+

浏览

相关文章
  • 如何使用Laravel实现模型关联
    这篇文章主要介绍了如何使用Laravel实现模型关联的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Laravel实现模型关联文章都会有所收获,下面我们一起来看看吧。一对一一对一关联是目前存在的最基本的关...
    99+
    标签:
  • MybatisPlus如何实现对象嵌套关联查询一对多List集合查询
    这篇文章主要讲解了“MybatisPlus如何实现对象嵌套关联查询一对多List集合查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MybatisPlus如何实现对象嵌套关联查询一对多Li...
    99+
    标签:
  • fast中user_id如何显示user表中的名称_关联模型
      问题:编辑框内的user_id显示的是nickname 列表里如何显示nickname或是username  解决方案如下: 需要更改3个地方,控制器,模型,js文件 控制器index list($where, $sor...
    99+
    标签:
    php
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作