php - Laravel查询同一张表上的嵌套关系
问题描述
我有一个用户表,其基本结构如下:
id, uname, parent_id
1 john null
2 smith 1
3 mickey 1
4 lara 2
5 tom 3
6 jessica 4
7 baneet 4
用户模型中的关系定义如下:
public function children()
{
return $this->hasMany('App\Models\User', 'parent_id');
}
public function parents()
{
return $this->belongsTo('App\Models\User', 'parent_id');
}
所以,我想做的是:找到所有孩子没有孩子的用户。用雷曼兄弟的话:找出所有有孩子但他们的孩子没有孩子的家庭。
当我只需要查询直接关系时,我知道该怎么做
User::whereHas('children',function($query){
// $query;
})->get();
但不确定如何在嵌套关系中做。
有什么办法可以做到这一点?
解决方案
请像这样在您的模型上更改一些
public function children(){
return $this->hasMany('App\Models\User', 'parent_id')->with('children');}public function parents(){
return $this->belongsTo('App\Models\User', 'parent_id')->with('parents');}
推荐阅读
- php - 如何仅授予特定页面的 AuthUserFile 访问权限?
- javascript - 成功数据从 AJAX GET 类型返回 null
- regex - 具有多个关键字的Google表格匹配类别到字符串
- php - laravel迁移创建操作时用方括号括起来的字段键和字段值
- javascript - 如何通过单击完整日历更新数据表?
- java - (Parse-SDK) 如何访问 List
来自另一个 ParseObject? - android - 如何获取android设备中所有已安装应用程序的apk列表
- flutter - 无法在 Flutter 中修改列表项/元素
- php - 如何在dominknow的php中将响应发送回api
- javascript - 如何在本机反应中使用 Jest 测试 lodash 的去抖动功能?