php - laravel与有向无环图的递归关系
问题描述
我有表“任务”并且与自身有多对多的关系
public function depends_on() //parents
{
return $this->hasMany(DependentTask::class, 'task_id');
}
public function dependents() //kids
{
return $this->hasMany(DependentTask::class, 'dependent_id');
}
关系可能是这样的
我想选择这样的任务
第一次打印 5 或 2
然后是 3 和 6
然后是 4 和 1
我怎么能通过laravel做到这一点?
解决方案
这是您可以使用递归关系的方式:
public function dependsOn()
{
return $this->hasMany('Account', 'task_id','dependent_id');
}
public function dependents()
{
return $this->dependsOn()->with('dependents');
}
然后:
$dependents = Dependents::with('dependents')->first();
$dependents->dependents;
$dependents->dependents->first()->dependents; // .. and so on
推荐阅读
- javascript - 在javascript中创建元素时如何触发asp.net函数?
- image - Woocommerce:类别图像作为产品占位符图像
- r - 如何知道 R 中哪个包保存当前函数?
- flutter - 动画列表只删除最后一个项目而不是给定索引处的项目
- c++ - 收藏品不会在联系时删除
- javascript - Node.js 中的 ENOMEM 由高虚拟内存使用引起
- angular - 角。为什么调用 markForCheck() 结果来查看更新
- c++ - 为什么临时数组可以在 C++ 的 MergeSort 中用变量初始化?
- reactjs - 在不同的 lerna monorepos 中操作路线
- c++ - 如何创建 IOUSBHostPipe::CompleteAsyncIO 回调?