Я нахожусь в действии своих фотографий с помощью PictureController.php. То, что я хочу сделать, - это указать идентификатор текущей фотографии, которую я просматриваю, создать карусель фотографий, содержащих две фотографии, и две фотографии после текущей фотографии с текущей фотографией посередине (всего 5).
Я указал на this solution, но я не могу преобразовать его в CakePHP, используя $ this-> Photo-> query.
Мой контроллер
$this->set('photos', $this->Photo->query("
SELECT id, file FROM photos WHERE id <= $id AND page_id = $page_id ORDER BY id DESC LIMIT 3
UNION ALL
SELECT id, file FROM photos WHERE id > $id AND page_id = $page_id ORDER BY id ASC LIMIT 2
"));
К сожалению, когда я не вижу ничего, когда я перехожу на отладку. id, file и page_id - все столбцы в таблице фотографий. Оба элемента #id и $ page_id передаются в действие с маршрутизатора. Является ли мой синтаксис неправильным?
EDIT: Если я удалю UNION ALL и второй оператор SELECT, тогда запрос работает нормально, поэтому это не проблема с тем, что модель не загружается, потому что это так.
EDIT (обходной путь): На данный момент я делаю два запроса, которые не являются идеальными.
$this->set('photos_before', $this->Photo->find('all', array(
'conditions' => array(
'Photo.page_id' => $page_id,
'Photo.id <' => $id
),
'order' => array('Photo.id ASC'),
'limit' => 2
)));
$this->set('photos_after', $this->Photo->find('all', array(
'conditions' => array(
'Photo.page_id' => $page_id,
'Photo.id >' => $id
),
'order' => array('Photo.id ASC'),
'limit' => 2
)));
У меня есть перед собой руки, чтобы возвращать только поля и связанные с ними модели.
Ниже то, что я хочу, чтобы отобразить и в настоящее время он работает с помощью два запросов выше, но я надеюсь, что это может быть достигнуто с помощью одного, Cake дружественного запроса
Вы создали модель Фото? – sandip
Возникает ли ошибка при выполнении запроса? –
Да Фотография - это модель. Кажется, что ошибка не выполняется, когда запрос выполняется, когда отображается остальная часть моего представления, только раздел, содержащий запрос, говорит «Внутренняя ошибка возникла» – bowlerae