Угруповання умов у запиті ORM Propel (condition, combine)

Часто доводиться комбінувати умови у запиті. Якщо SQL це зробити легко, то використовуючи ORM доводиться винаходити велосипеди. ORM Propel дозволяє це зробити без милиці через інструменти ->condition() та ->combine().

Розглянемо складний приклад, щоб можна було виділити з нього багато корисного для себе.

Наприклад, нам потрібно в WHERE вставити таку умову:

Є товари, які потрібно вибрати з категорії за таким принципом.

(A && B &&C) OR D

A - (user) - товар, що створив Користувач.

B - (price) - ціна товару

С - (stock) - кількість товару

D - (ignore) - прапор, який відповідає за "виводити в будь-якому випадку"

Приклад реалізації:

<?php
Products::create()
    ->condition('user', 'Products.User = ?', 10) // 10 - Id користувача
    ->condition('price', 'Products.Price > ?', 5000) // Ціна більше 5000
    ->condition('stock', 'Products.Stock > ?', 0) // Кількість більше 0
    ->combine(['user','price', 'stock'], 'and', 'u_p_s') // об'єднуємо умови в одно
    ->condition('ignore', 'Products.Ignore = ?', 1) // Якщо один товар показувати в будь-якому випадку
    ->where(['u_p_s','ignore'], 'or') // Порівнюємо 2 умови
    ->find();

1765 0

Відгуки

Поки немає жодного відгуку. Станьте першим!
Тільки авторизовані користувачі можуть залишати відгуки Вхід

Схожі статті

Створити та завантажити CSV на PHP

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

Шаблони ImageCMS 4.10-4.12.1

Останні шаблони від ImageCMS 4.12, для завантаження потрібна авторизація.