Doctrine “删除”原则;()";自动地

Doctrine “删除”原则;()";自动地,doctrine,Doctrine,当我构建一个查询时,条令自动删除了“()” 我的问题是: $query = MstFontTable::getInstance()->createQuery('msf'); $query->where('(full_font_name LIKE ? OR full_font_name LIKE ? OR full_font_name LIKE ? OR full_font_name = ?

当我构建一个查询时,条令自动删除了“()”

我的问题是:

$query = MstFontTable::getInstance()->createQuery('msf');
$query->where('(full_font_name LIKE ? OR
                full_font_name LIKE ? OR
                full_font_name LIKE ? OR
                full_font_name = ? OR
                font_name = ?)', array(trim($fontName) . ',%',
                                       '%,' . trim($fontName),
                                       '%,' . trim($fontName) . ',%',
                                       trim($fontName),
                                       trim($fontName)
                                      )
             );
$query->andWhere('((tenant_id = 0 OR tenant_id = ?))', array(intval($tenantId)));
下面是我使用$query->getDql()时的结果:

下面是使用$query->getSqlQuery()时的结果:


有人帮我解释一下这个问题吗?

试着去掉多余的括号,如:

$query->andWhere('((tenant_id = 0 OR tenant_id = ?))', array(intval($tenantId)));

对第一个也同样如此,如:

$query->where('(full_font_name LIKE ? OR ...

看看会发生什么。你不需要它们,条令会为这些和/或条件加上括号

$query->andWhere('((tenant_id = 0 OR tenant_id = ?))', array(intval($tenantId)));
$query->andWhere('tenant_id = 0 OR tenant_id = ?', array(intval($tenantId)));
$query->where('(full_font_name LIKE ? OR ...
$query->where('full_font_name LIKE ? OR ...