Cakephp 4:FIND_IN_SET 未返回结果

Cakephp 4: FIND_IN_SET not returning result

我的应用程序中有一个数组 $submenus,我将其分解为分隔字符串:

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

字符串看起来像这样:'ml_,nc_,msr_'。这些值存储在我的 submenus table 中名为 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 条件。当我这样做时,我没有返回子菜单,只有主菜单。调试确认字符串的格式为 属性。没有出错,我只是没有结果集。

当我 运行 在 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 |
+----+---------------------------+

我错过了什么?

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