如果在 CakePHP 3.0 中传递零或无,则抑制 WHERE 子句
Suppress WHERE clause if is passed Zero or Nothing in CakePHP 3.0
我正在使用 CakePHP 3.0
并为您的 ORM
创建了一个 query
,这个 query
工作得很好,但现在我需要一个特定的参数是 0 或 nothing 传递给删除 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 是 0 或 nothing 则应删除 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);
}
我正在使用 CakePHP 3.0
并为您的 ORM
创建了一个 query
,这个 query
工作得很好,但现在我需要一个特定的参数是 0 或 nothing 传递给删除 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 是 0 或 nothing 则应删除 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);
}