【发布时间】:2019-11-27 02:08:51
【问题描述】:
我有一个下拉列表来选择一个父级,它是对页面的自引用。我想限制该下拉列表的结果,这样它就不会允许我将页面嵌套超过一层。
如果我编辑“儿子”页面,并且“儿子”有一个“孙子”,那么我不应该被允许选择“爸爸”作为儿子的父母,因为它会创建一个巢很深的
在以下情况下,当我编辑 Son 记录时,我不应该选择 Dad 作为它的父母,因为儿子有孩子。
+----+-----------+----------+
| id | parent_id | title |
+----+-----------+----------+
| 1 | NULL | Dad |
| 2 | NULL | Son |
| 3 | 2 | Grandson |
+----+-----------+----------+
现在在这种情况下,我应该能够在编辑 Son 记录时选择 Dad 作为父母,因为 Son 没有任何孩子
+----+-----------+----------+
| id | parent_id | title |
+----+-----------+----------+
| 1 | NULL | Dad |
| 2 | NULL | Son |
| 3 | NULL | Grandson |
+----+-----------+----------+
我正在努力解决这个问题,以及如何将这一切包装在查询构建器中。
到目前为止我所拥有的
如果 Son 有自己的 Child,则以下代码有效,我将无法选择 Dad,这很好。但如果没有孩子,它就会失败。
归结为:我的父选择还应该允许显示 parent_id 为空的页面,但前提是当前记录 (Son) 没有任何子记录。
Recap: 仅当它没有出现在任何 parent_id 中时才显示记录,因此没有子项,如果出现则不显示任何记录.. 如果没有,它应该显示 parent_id 所在的记录空值。这可以在一个查询中实现吗?
$query->where('id', '<>', $page->id);
$query->where('parent_id', '<>', $page->id);
【问题讨论】:
-
那么,只有在记录没有子记录且没有父记录的情况下,您才想选择记录?
-
只有当记录没有出现在任何 parent_id 中,所以没有孩子,如果有,但是没有记录将被显示.. 如果没有,它应该显示 parent_id 的记录为空。
-
你的解释很混乱:D,你能解释一下吗
-
嗯,我有一个下拉列表来选择一个父级,它是对页面的自引用。我想限制该下拉列表的结果,这样它就不允许我嵌套一个页面超过一层。如果我编辑“儿子”页面,并且“儿子”有一个“孙子”,那么我不应该被允许选择“爸爸”作为儿子的父母,因为它会创建一个很深的巢跨度>
-
我已经添加了我的答案试试看
标签: php mysql laravel query-builder