J'ai un problème avec une requête qui fonctionne dans phpmyadmin mais pas avec Zend_db. Vous pouvez lire au sujet de la requête dans SQL statement with several joinsRequête Zend_Db Mysqli prepare error: L'opérande doit contenir 1 colonne (s)
Je ces tables
Post
ID
entry
Category
ID
name
CategoryBinding
ID
postID
categoryID
Et voici mon code php:
class Blog_Model_DbTable_Posts extends Zend_Db_Table
{
protected $_name = 'Posts';
public function getByCategoryId($id)
{
$query =
"SELECT *
FROM `Post` AS `p`
LEFT JOIN `CategoryBinding` AS `cb` ON p.ID = cb.postID
LEFT JOIN `Category` AS `c` ON cb.categoryID = c.ID
INNER JOIN `Post` AS `p2` ON p.id = p2.id
WHERE p.id in
(
SELECT p2.id
FROM `Post` as `p2`
LEFT JOIN `CategoryBinding` AS `cb` ON p2.ID = cb.postID
LEFT JOIN `Category` AS `c` ON cb.categoryID = c.ID
WHERE c.id = 1
)
"
return parent::fetchAll($query);
J'ai essayé d'exécuter cette requête avec Boath l'adopteur AOP et avec l'adopteur de mysqli. Je reçois cette erreur avec l'adopteur mysqli.
Mysqli prepare error: Operand should contain 1 column(s)
J'ai googlé à ce sujet et constaté qu'il est peut-être un bogue dans Zend_Db, mais depuis ma connaissance sql est un peu limité, je ne sais pas si je fais quelque chose de mal ou si elle est en effet un bug. Pouvez-vous s'il vous plaît m'aider à comprendre cela? Réservoir Vous.
Quelle version de Zend utilisez-vous? Une recherche rapide montre qu'un bug qui pourrait être lié existe dans 1.5 - 1.8 http://framework.zend.com/issues/browse/ZF-3311 – Brandon
J'utilise 1.9 (la version la plus récente) – unkownt