如果在 CakePHP 3.0 中传递零或无,则抑制 WHERE 子句

Suppress WHERE clause if is passed Zero or Nothing in CakePHP 3.0

我正在使用 CakePHP 3.0 并为您的 ORM 创建了一个 query,这个 query 工作得很好,但现在我需要一个特定的参数是 0nothing 传递给删除 where 子句的方法。

创建 ORM 查询的方法

public function listProductsByTrend($subCategoryId, $productsQuantity, $column, $order) 
{ 
$products = TableRegistry::get('products'); 
$query = $products->find(); 
$query->select(['product_name', 'quantity', 'sold', 'description', 'price', 'old_price', 'thumbnail']) 
->where(['sub_category_id' => $subCategoryId]) 
->order([$column => $order]) 
->limit($productsQuantity); 
return $query; 
} 

如果 $subCategoryId 是 0nothing 则应删除 where 子句。

没有秘密。像这样剥离逻辑:

public function listProductsByTrend($subCategoryId, $productsQuantity, $column, $order)
{
    $products = TableRegistry::get('products');
    $query = $products->find();
    $query = $query->select(['product_name', 'quantity', 'sold', 'description', 'price', 'old_price', 'thumbnail']);
    if ($subCategoryId > 0) {
        $query = $query->where(['sub_category_id' => $subCategoryId]);
    }

    return $query->order([$column => $order])->limit($productsQuantity);
}