У меня проблема с запросом, который работает в phpmyadmin, но не в Zend_db. Вы можете прочитать о запросе в операторе SQL с несколькими соединениями.
у меня есть эти таблицы
Post
ID
entry
Category
ID
name
CategoryBinding
ID
postID
categoryID
И это мой 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);
Я попытался запустить этот запрос с помощью адоптанта PDO и адоптера mysqli. Я получаю эту ошибку с усыновителем mysqli.
Mysqli prepare error: Operand should contain 1 column(s)
Я погуглил об этом и обнаружил, что это, возможно, ошибка в Zend_Db, но, поскольку мои знания sql несколько ограничены, я не знаю, делаю ли я что-то неправильно или это действительно ошибка. Не могли бы вы помочь мне понять это? Спасибо.