EC-CUBE / EC-CUBE/ec-cube

WhereCustomizer にて WhereClause で AND, OR 条件を追加したい

Open
#4,494 0 comments 0 reactions 0 assignees View on GitHub
affected:plugin
Dominant language
PHP
Stars
788
Forks
719
Avg merge
4d 4h
Merged PRs (30d)
39

Description

## 概要(Overview)

現状 WhereClause に OR 条件が用意されていないため、OR条件を加えるためには QueryCustomizer を実装する必要があります。
AND 条件は複数の WhereClause を定義することで実装可能ですが、 OR と同じく AND 関数も用意しておいた方が柔軟だと思われます。

## 期待する内容(Expect) or 要望 (Requirement)

例えば以下のように指定できるのはどうでしょうか。

```php
class ProductListWhereCustomizer extends WhereCustomizer
{
public function getQueryKey()
{
return QueryKey::PRODUCT_SEARCH;
}
protected function createStatements($params, $queryKey)
{
return WhereClause::and([
WhereClause::eq('pc.stock_unlimited', ':StockUnlimited', false),
WhereClause::lte('pc.stock', ':Stock', 0),
]);

return WhereClause::or([
WhereClause::eq('pc.stock_unlimited', ':StockUnlimited', true),
WhereClause::gt('pc.stock', ':Stock', 0),
]);
}
}
```

## 再現手順(Procedure)

### 環境 (environment)
+ EC-CUBE: 4.0.x
+ PHP: 7.x.x
+ DB:
- PostgreSQL x.x.x
- MySQL x.x.x

## 関連情報 (Ref)

> 参考ドキュメント: https://doc4.ec-cube.net/customize_repository

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.