2013-08-05 1 views
0

У меня есть проблема, это часть моего контроллера и дает мне пустой массив:Zend Framework 1 пустой массив с БД выбрать

$tifos = $model-> select()->setIntegrityCheck(false) 
       -> from(array('t'=>'tifos'), array('*', 'date'=>'DATE(t.created_at)')) 
       -> join(array('u'=>'users'), 'u.id=t.users_id', array('username', 'avatar')) 
       -> where('status = ?', $status) 
       -> order('likes DESC') 
       -> limit(10, 0)->query()->fetchAll() 
       ; 

$ модель является экземпляром класса, который расширяет Zend_Db_Table ,

В чем может быть проблема? Я использую Zend 1.12.

EDIT

Хорошо, вот что у меня есть сейчас, мой MySQL запрос:

SELECT `t`.*, DATE(`t`.`created_at`) AS `date`, `u`.`username`, `u`.`avatar` FROM `tifos` AS `t` INNER JOIN `users` AS `u` ON `u`.`id`=`t`.`users_id` WHERE (`t`.`status` = 'ok') ORDER BY `t`.`likes` DESC LIMIT 10 

Моя DB Структура:

CREATE TABLE IF NOT EXISTS `tifos` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`users_id` int(11) NOT NULL, 
`status` enum('ok','waiting','deleted') NOT NULL DEFAULT 'waiting', 
`file` varchar(127) NOT NULL, 
`description` varchar(255) NOT NULL, 
`likes` int(11) NOT NULL, 
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
PRIMARY KEY (`id`), 
KEY `users_id` (`users_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; 



CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`username` varchar(63) NOT NULL, 
`password` varchar(40) NOT NULL, 
`email` varchar(63) NOT NULL, 
`firstname` varchar(63) NOT NULL, 
`lastname` varchar(63) NOT NULL, 
`avatar` varchar(64) NOT NULL, 
`email_verified` tinyint(1) NOT NULL, 
`is_active` tinyint(1) NOT NULL, 
`verification_key` varchar(40) NOT NULL, 
`newsletter` tinyint(1) NOT NULL, 
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
PRIMARY KEY (`id`), 
KEY `username` (`username`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=28 ; 
+0

Вопрос имя вводит в заблуждение. В стеке лучше задать другой вопрос, чем отредактировать один вопрос для всех проблем. Эксперты ББ даже не будут читать ваш вопрос. – kwarunek

ответ

0

Проверьте, какие результаты оптоволоконный заявления SQL в некоторых клиент, такой как PMA

$oSql = $model-> select()->setIntegrityCheck(false) 
       -> from(array('t'=>'tifos'), array('*', 'date'=>'DATE(t.created_at)')) 
       -> join(array('u'=>'users'), 'u.id=t.users_id', array('username', 'avatar')) 
       -> where('status = ?', $status) 
       -> order('likes DESC') 
       -> limit(10, 0); 

// die((string)$oS); //execute sql in mysql client, pma and checks if it is correct 

$tifos = $model->fetchAll($oS); 
+0

Честно говоря, я действительно не понимаю. Где я должен это поставить?:> – Ziker

+0

Я отделяю создание SQL-запроса от запросов и выборки. Uncomment die(), чтобы увидеть созданный SQL и выполнить его в PMA – kwarunek

+0

Хорошо, он должен построить такой запрос: SELECT *, DATE (t.created_at) в качестве даты FROM tifos as t JOIN users as u ON t.users_id = u.id WHERE t.status = 'ok' ORDER BY t.likes DESC LIMIT 0,10; Я прав? Он дает null в PMA, почему? Невозможно найти ошибки: p – Ziker

Смежные вопросы