Алексей Asked:2020-06-02 03:29:45 +0000 UTC2020-06-02 03:29:45 +0000 UTC 2020-06-02 03:29:45 +0000 UTC 学说嵌套集。选择相关表格中具有特定值的孩子的父母 772 有一个带有类别的表 - 类别(嵌套集),它与表“产品” - 产品有联系。有上层的分类,比如衣服,那么中间可以有外套,冬天等等。最低级别是“夹克”类别。对于产品记录,category_id 字段与类别表中的最低级别有关系。如果相关产品的children的字段等于某个值,如何选择顶级类别? sql 1 个回答 Voted Best Answer Алексей 2020-07-01T15:23:44Z2020-07-01T15:23:44Z 选择标准是: 显示其子级具有不超过 7 天的相关产品记录的父类别(0 级)。 我这样做了: 加入产品 加入父母 产品创建日期不迟于 7 天 按父母分组(避免重复),按父母姓名排序 $qb = $this->createQueryBuilder('node') ->select('node', 'parent') ->join('node.parent', 'parent') ->join('node.product', 'p') ->where('parent.lvl = 0') ->andWhere('p.created_at >= :criteria') ->setParameter('criteria', new \DateTime('-7 days')) ->groupBy('parent.id') ->orderBy('parent.title', 'ASC') ; $query = $qb->getQuery(); $result = $query->getArrayResult(); 结果,我得到了一个这样的数组: array (size=2) 0 => array (size=8) 'id' => int 6 'title' => string 'Мобильные телефоны' (length=35) 'photo' => null 'slug' => string 'Mobilnye_Telefony' (length=17) 'lft' => int 10 'rgt' => int 11 'lvl' => int 1 'parent' => array (size=7) 'id' => int 2 'title' => string 'Смартфоны и гаджеты' (length=36) 'photo' => string 'ct/a455d2b2d78f75046b090131de3991e4.jpg' (length=39) 'slug' => string 'Smartfony_I_Gadzhety' (length=20) 'lft' => int 7 'rgt' => int 12 'lvl' => int 0 1 => array (size=8) 'id' => int 3 'title' => string 'Телевизоры' (length=20) 'photo' => null 'slug' => string 'Televizory' (length=10) 'lft' => int 2 'rgt' => int 3 'lvl' => int 1 'parent' => array (size=7) 'id' => int 1 'title' => string 'Электроника' (length=22) 'photo' => string 'ct/7f38e939e071b5225b8e8e003b8559fd.jpg' (length=39) 'slug' => string 'Elektronika' (length=11) 'lft' => int 1 'rgt' => int 6 'lvl' => int 0 接下来,一个预先写好的函数: $outputArray = []; foreach ($inputArray as $key => $value) { array_push($outputArray, $value[$keys]); } return $outputArray; ,我将所有“父母”的内容“撕掉”到一个新数组中: array (size=2) 0 => array (size=7) 'id' => int 2 'title' => string 'Смартфоны и гаджеты' (length=36) 'photo' => string 'ct/a455d2b2d78f75046b090131de3991e4.jpg' (length=39) 'slug' => string 'Smartfony_I_Gadzhety' (length=20) 'lft' => int 7 'rgt' => int 12 'lvl' => int 0 1 => array (size=7) 'id' => int 1 'title' => string 'Электроника' (length=22) 'photo' => string 'ct/7f38e939e071b5225b8e8e003b8559fd.jpg' (length=39) 'slug' => string 'Elektronika' (length=11) 'lft' => int 1 'rgt' => int 6 'lvl' => int 0
选择标准是: 显示其子级具有不超过 7 天的相关产品记录的父类别(0 级)。
我这样做了:
按父母分组(避免重复),按父母姓名排序
结果,我得到了一个这样的数组:
接下来,一个预先写好的函数:
,我将所有“父母”的内容“撕掉”到一个新数组中: