Подсоединяем не объявленную таблицу в Propel или Join Custom Table Propel / ~#root -i Подсоединяем не объявленную таблицу в Propel или Join Custom Table Propel / ~#root -i Подсоединяем не объявленную таблицу в Propel или Join Custom Table Propel / ~#root -i Подсоединяем не объявленную таблицу в Propel или Join Custom Table Propel / ~#root -i Подсоединяем не объявленную таблицу в Propel или Join Custom Table Propel / ~#root -i Подсоединяем не объявленную таблицу в Propel или Join Custom Table Propel / ~#root -i Подсоединяем не объявленную таблицу в Propel или Join Custom Table Propel / ~#root -i Подсоединяем не объявленную таблицу в Propel или Join Custom Table Propel / ~#root -i
  • RU
  • UA
  • EN
  • Создать интернет-магазин
  • Документация
  • Блог
    • Unix-подобные ОС
    • Php
    • MySQL
    • JavaScript
    • Менеджеры пакетов
    • Docker
    • Seo
  • Вспомогательные сервисы
    • Короткие ссылки
    • Oбмен просмотрами YouTube
  • Вход
  • Регистрация
  • Главная
  • Php
  • Подсоединяем не объявленную таблицу в Propel или Join Custom Table Propel

Подсоединяем не объявленную таблицу в Propel или Join Custom Table Propel

На днях передо мной стала задача отсортировать выдачу продуктов по таблице, которая не описана в schema.xml. Приведу краткий пример схемы таблицы и структуры таблицы с позициями, по которой мне следовало отсортировать товары.

Упрощенная таблица товаров (объединил таблицу переводов с основной и урезал поля):

id (int) id товара
name (string) Имя
create_date (int) Дата

Схема этой таблицы (schema.xml):

<table name="shop_products" phpName="SProducts">
        <vendor type="mysql">
            <parameter name="Charset" value="utf8"/>
        </vendor>

        <column name="id" type="INTEGER" required="true" autoIncrement="true" primaryKey="true"/>        
        <column name="name" type="varchar" size="500" required="true"/>
        <column name="create_date" type="INTEGER"/>        
</table>

Дорпустим у нас есть привязка товаров к статьям, и у каждой статьи может встречаться один и тот же товар и у каждого товара может быть своя позиция в каждой статье.

Приведу пример таблицы статей и связи товаров (назовем таблицу link_page):

page_id (int) Id статьи (приведено для примера)
product_id (int) Id товара со схемы SProducts
position (int) Позиция в которой товар есть в статье

Вот есть позиция у каждого товара в статье, но в таблице товара нет связки, чтобы сделать join пропелом. По этому начинаем делать вот так:

SProductsQuery::create()                            
   ->addJoin('shop_products.id' , 'link_page.product_id', Criteria::INNER_JOIN)
   ->addAsColumn('position', 'link_page.position')
   ->where('page_link_product.page_id = ' . 'ID страницы товара')                            
   ->orderBy('position','ASC')                      
    ->find();

В моем случае полный путь к Criteria::INNER_JOIN является \Propel\Runtime\ActiveQuery\Criteria::INNER_JOIN.

SProductsQuery - сгенерированная модель по схеме, упрощенная для понимания и описанная выше.

Данный запрос даст возможность подключить не объявленную в моделях таблица в пропел запрос, чтобы не делать костылей и велосипедов для сортировки.

Пробуйте, разбирайтесь, в моем случае addJoin() позволил сэкономить время переписи и перегенерации схемы под нужды, тем самым не сильно отягощая страницу статьи, на которой присутствуют товары.

root-i
21 Мая 18
699
0
Теги
Php 5.6 Propel ORM
Поделиться

Комментарии

Имя
Электронная почта
Рейтинг
Отзыв

Другие статьи из категории

25 Апреля 2022

Создать и скачать CSV на PHP

Рассмотрим возможность быстрого создания CSV файла с автоматическим скачиванием файла. Рассмотрим формирование, разделители и header для возможности скачать файл.

19 Июня 2019

Шаблоны ImageCMS 4.10-4.12.1

Последние шаблоны от ImageCMS 4.12, для скачивания нужна авторизация.

26 Января 2019

Долгое хранение корзины в интернет-магазине

Рассмотрим варианты популярные варианты хранения товаров в корзине в интернет-магазине. Обозначим плюсы и минусы таких хранений. Рассмотрим варианты долгосрочного хранения корзины.

17 Января 2019

Ключ-лицензия для ImageCMS 4.9-4.12.1 Pro и Pre

Создание ключа для imageCMS 4.9-4.12.1 Pro и Pre. Для получения следует авторизироваться.

07 Декабря 2018

$_SERVER['DOCUMENT_ROOT'] в CLI или Cron

При запуске скрипта с консоли отсутствует DOCUMENT_ROOT в $_SERVER. Попытаемся обойти это своими путями, отловить директорию файла.

31 Октября 2018

Анализ нагруженных частей Php кода с помощью xhprof

После разработки какого-либо инструмента на PHP, становится вопрос, насколько созданный код ресурсный и какие элементы он затрагивает еще. Рассмотрим установку xhprof, настройку и рассмотрим способы работы с xhprof.

18 Июля 2018

Группировка условий в запросе ORM Propel (condition, combine)

Разберем возможность объединения условий в запросе по группам в Propel. Рассмотрим пример фильтрации по полям с помощью ->condition() и ->combine().

14 Июня 2018

Авторизация 1С на сайте PHP_AUTH_USER на CentOS apache

Столкнулся с проблемой авторизации 1с на сайте. Сервер почему то не принимал от нее параметр PHP_AUTH_USER и PHP_AUTH_PW. Рассмотрим подробнее решение и обход данных параметров в $_SERVER .

Категории

  • Unix-подобные ОС
  • Php
  • MySQL
  • JavaScript
  • Менеджеры пакетов
  • Docker
  • Seo

Теги

Ubuntu 14.04 (17) Софт (11) Gearman (3) Сервисы (2) Framework (1) MVC (1) Php 5.6 (16) Cli (3) Propel (3) ORM (3) JavaScript (5) Css (1) Composer (4) Docker (3) Seo (4) MySQL (5) docker-compose (2) CentOS (1) 1С (1) Memcache (1) Memcached (1) Php 7 (6) Анализ (2) Ubuntu 18.04 (13) MySQL 5.7 (4) Генерация (2) Bower (1) Npm (1) NodeJs (3) Gulp (1) ImageCMS (2) Базы (1) JQuery (1) Сниппет (1) Apache (1) Cron (1)

Последние комментарии

alex, я вижу 2 причины почему так может быть. Не в...
root-i
04.07.22
Сделал все так как написано в статье, не работает.
alex
04.07.22
Как вариант это может происходить из-за неизвестно...
root-i
21.01.22
Чтобы убрать ошибку Uncaught TypeError: $ is not a...
wlad2.ru
11.01.22

Делюсь информацией в которой я требовал помощи и разбираясь затрачивал много времени. Если информация помогла хотя бы одному человеку, значит этот сайт создан не зря.

Благодарность, на продолжение работы сайта:
Контакты

Telegram Viber Mail

Поиск по сайту

  • Вход
  • Регистрация

Сайт работает на chmod -R