Cakephp 3 выберите в сложном сложном запросе - PullRequest
0 голосов
/ 25 июня 2019

У меня есть оператор выбора mysql, который я запускал напрямую в phpmyadmin.Работает найди.Как мне написать оператор mysql для этого в cakephp 3. Я благодарен за помощь.

Логика такова: таблица product_categories имеет product_id и category_id, связывающие и таблицу категорий, и таблицу продуктов.Таблица product_options имеет product_id, размер, цвет, кол-во.Я пытаюсь отобразить продукты, основанные на категории, но я хочу отображать только те, которые имеют КРАСНЫЙ цвет.

select *from product_options, (select * FROM products Products 
left JOIN product_categories pc ON Products.id = pc.product_id
WHERE pc.category_id = 74)  as ptotals
left join product_options po ON ptotals.id = po.product_id
where po.color = 'RED'

1 Ответ

0 голосов
/ 25 июня 2019

-> match () - ваш друг здесь. Начать с:

$query = $this->Products->find('all')
            ->matching('Categories')
            ->where([
                'ProductCategories.product_id' => $category['id'],
                'ProductCategories.category_id' => '74'];

или как они это делают в документах https://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#filtering-by-associated-data-via-matching-and-joins

$query = $this->Products->find();
$query->matching('Categories', function ($q) {
    return $q->where(['Category.id' => '74']);
});

и создайте свой запрос оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...