Grouping conditions in an ORM Propel query (condition, combine)

It is often necessary to combine conditions in a query. If this is easy to do in SQL, then using the ORM you have to reinvent the wheel. ORM Propel allows you to do this without a crutch through the tools ->condition() and ->combine().

Let's look at a complex example so that we can extract a lot of useful things from it.

For example, we need to insert the following condition in WHERE:

There are products that you need to select from the category according to this principle.

(A && B && C) OR D

A - (user) - User who created the product.

B - (price) - item price

С - (stock) - quantity of goods

D - (ignore) - flag responsible for "output anyway"

Implementation example:

<?php
Products::create()
    ->condition('user', 'Products.User = ?', 10) // 10 - User ID
    ->condition('price', 'Products.Price > ?', 5000) // Price is greater than 5000
    ->condition('stock', 'Products.Stock > ?', 0) // Quantity is greater than 0
    ->combine(['user','price', 'stock'], 'and', 'u_p_s') // combine conditions into one
    ->condition('ignore', 'Products.Ignore = ?', 1) // If 1 then show product anyway
    ->where(['u_p_s','ignore'], 'or') // Compare 2 conditions
    ->find();

1764 0

Comments

Be the first to review this item. Share your rating and review so that other customers can decide if this is the right item for them.
You have to log in to leave a comment. Sign in

Similar articles

Create and download CSV in PHP

Consider the possibility of quickly creating a CSV file with automatic file download. Consider the formation, separators and header for the ability to download the file.