約7つの入力があるフォームがあり、ユーザーが選択した基準に従って検索できるようにしたいと考えています。
たとえば、入力名は次のようになります。
- 名前
- 年
- 性別
- 登録日
しかし、私のユーザーは最初の 3 つだけを選択したいので、SQL クエリは次のようになります。
SELECT * FROM table WHERE name='.$name.' AND age= '.$age.' AND gender = '.$gender.'
この作業はクールですが、MVC アーキテクチャを使用してユーザー入力に基づいて常に異なる SQL クエリを作成する方法の問題に直面しています。
私のアイデアは次のようなものでした:
// Syntax is from Nette Framework so please don't care about it, I basicly need logic for it in MVC
public function findMatch($name= NULL, $age= NULL, $gender = NULL)
{
$selection = $this->database->table('table');
if ($name) {
$selection = $selection->where('name', $name);
}
if ($age) {
$selection = $selection->where('age', $age);
}
if ($gender) {
$selection = $selection->where('gender', $gender);
}
return $selection;
}
ただし、これは「AND」ではなく「OR」選択でのみ役立ちます。誰かがこれを解決する方法を理解するのを手伝ってくれますか?