Как добавить в массив одну копию ms2gallery?
Всем привет. Может кто-нибудь подсказать каким образом заджойнить ms2Gallery, чтобы не создавалось по 3 копии одной и той же записи с разными размерами изображений (small, medium, full), а в массив добавлялись поля (small, medium, full) к одной записи? Так вроде в msProducts сделано. Хотелось узнать возможно ли такое сделать средствами pdoTools?
P.S. Код за катом.
Вот код:
P.S. Код за катом.
Вот код:
{'!pdoPage' | snippet : [
'element' => 'pdoClass',
'class' => 'sOneMusicTrack',
'loadModels' => 'ms2gallery',
'leftJoin' => '{
"Image": {
"class": "msResourceFile",
"on": "sOneMusicTrack.docid = Image.resource_id"
}
}',
'select' => '{
"sOneMusicTrack": "*",
"Image": "Image.url as img"
}',
'where' => [
'docid' => $docid
],
'limit' => 100,
'tpl' => 'sOneMusicTrack.json'
]}
Комментарии: 6
Хз как джоинить. Сам так и не разобрался. Можно конечно подзапросом это получить, но на вашем месте я бы для модели sOneMusicTrack добавил бы связь с галлереей один ко многим и ее бы использовал.
На чистом SQL это можно через GROUP BY и HAVING сделать.
{'!pdoPage' | snippet : [
'class' => 'sOneMusicTrack',
'loadModels' => 'ms2gallery',
'leftJoin' => [
"medium" => [
"class" => "msProductFile",
"alias" => "medium",
"on" => "medium.product_id = sOneMusicTrack.docid AND medium.rank = 0 AND medium.path LIKE '%/medium/%'"
],
"small" => [
"class" => "msProductFile",
"alias" => "small",
"on" => "small.product_id = sOneMusicTrack.docid AND small.rank = 0 AND small.path LIKE '%/small/%'"
],
"full" => [
"class" => "msProductFile",
"alias" => "full",
"on" => "full.product_id = sOneMusicTrack.docid AND full.rank = 0 AND full.path LIKE '%/full/%'"
],
],
'select' => [
"medium" => "medium.url as medium",
"small" => "small.url as small",
"full" => "full.url as full",
"sOneMusicTrack" => "*",
],
'where' => [
'docid' => $docid
],
'limit' => 100,
'tpl' => 'sOneMusicTrack.json'
]}
Скорее всего здесь еще понадобится указать sortby => id
Как лучше всего в условие where на Fenom добавить исключения из выборки все записи с классом msProduct и Ticket? Если добавляю через запятую, почему-то работает только одно условие на поле class_key.
Я вот так писал условие:
И вот еще из того же проекта:
{var $where = ['(`Data`.`available_sizes` > 0 OR `Data`.`available_rows` > 0 OR `Data`.`soon_available` > 0)']}
Правда в примере OR, но суть не меняется.И вот еще из того же проекта:
{var $where = ['`Data`.`new` != 0 AND (`Data`.`available_sizes` > 0 OR `Data`.`available_rows` > 0)']}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.