Cakephp 4:FIND_IN_SET未返回结果

35g0bw71  于 2022-11-12  发布在  PHP
关注(0)|答案(1)|浏览(172)

我在应用程序中有一个数组$submenus,我将它内爆为一个分隔字符串:

$subs = implode(',', $submenus);

字符串看起来如下所示:'ml_,nc_,msr_'。这些值存储在我的submenus表中名为group_prefix的字段中。每个submenu行都有一个唯一的group_prefix
下列程式码会从数据库建置功能表和子功能表:

$menus = $this->Menus->find('all', [
        'order' => ['Menus.display_order ASC'],
        'conditions' => $conditions,
        'contain' => [
            'Submenus' => [
                'conditions' => [
                    'Submenus.status' => 1,
                    'FIND_IN_SET("' . $subs . '", Submenus.group_prefix)'
                ],
            ]
        ]
    ]);
    $this->set('menus', $menus);

在我在Submenus上添加FIND_IN_SET条件之前,它一直工作得很好。当我添加FIND_IN_SET条件时,我没有返回子菜单,只有主菜单。调试确认字符串的格式正确。没有出错,我只是没有得到结果集。
当我在MySQL中运行子菜单查询时,它工作了。

set @prefixes = 'ml_,nc_,msr_';
SELECT `id`, `name` FROM `submenus` WHERE `status` = 1 AND FIND_IN_SET(`submenus`.`group_prefix`, @prefixes);

+----+---------------------------+
| id | name                      |
+----+---------------------------+
|  4 | Mission Lessons Module    |
|  5 | MSR Module                |
|  8 | Work Authorization Module |
+----+---------------------------+

我错过了什么?

l2osamch

l2osamch1#

答案是颠倒FIND_IN_SET中参数的顺序。

相关问题