sto ottenendo l'errore 'Violazione cardinalità', per il seguente SQL:violazione cardinalità DBAL errore
Doctrine \ DBAL \ Exception \ DriverException: si è verificata un'eccezione durante l'esecuzione
SELECT p.* FROM mod_products_products p
LEFT JOIN mod_products_products_categories c_link ON c_link.product_id = p.id
LEFT JOIN mod_products_brands b ON p.brand_id = b.id
LEFT JOIN mod_products_groups vg ON p.variation_id = vg.id
LEFT JOIN mod_products_categories c ON c_link.category_id = c.id
LEFT JOIN mod_products_group_options vg_o ON vg_o.group_id = vg.id
LEFT JOIN mod_products_group_values vg_o_v ON vg_o_v.option_id = vg_o.id
WHERE (p.name LIKE (?, ?)) AND (p.parent_id = 0) AND (vg_o.disabled=0)
GROUP BY p.id ORDER BY p.name ASC
LIMIT 18446744073709551615 OFFSET 0
con params ["% big%", "% light%"]: SQLSTATE [21000]: Violazione della cardinalità: 1241 Operand dovrebbe contenere 1 colonna/e.
L'errore si verifica solo se nell'elenco dei parametri è presente più di un valore per WHERE (p.name LIKE (?, ?))
.
Sto usando executeQuery()
e passando l'array come Connection::PARAM_STR_ARRAY
. Nella dichiarazione originale sto definizione del punto di problemi come:
$builder->andWhere('p.name LIKE (:partial_names)');
Sembra che non gli piace ottenere una matrice passata come partial_names. Qualche idea su cosa sta causando questo e su come evitarlo?
Vedi anche http: // stacko verflow.com/questions/1127088/mysql-like-in – bishop
Cosa ti ha fatto pensare che mysql LIKE possa accettare più di un argomento? –
@YourCommonSense Poiché 'foo LIKE ('bar')' è valido in MySQL, penso sia naturale pensare che 'foo LIKE ('bar', 'baz')' sia valido. – bishop