入力の長さに応じてクエリを変更するユーザ入力を使用して動的にEloquentクエリを作成する方法を試しています。これは単純なMySQLを使用して簡単です...ちょうどユーザーの入力に基づいてクエリ文字列を連結します。 Eloquentを使用する目的を破る「生の」SQLクエリを使用するか、b)eval()関数のような非常に不健全なものを使用しない限り、Eloquentを使用することは不可能です。パラメータの数が不明なLaravel Eloquent Queryの作成
どのようにして、未知の長さのユーザの入力を反復処理と「OR」の組み合わせを使用して、単語の複数のフィールドを検索雄弁クエリを作成することができますし、「AND」
は実際に働くことができない次の擬似コードを考えてみましょう。
$search = "cat sat on the mat";
$searchWords = explode(' ', $search);
$data['finds'] = DB::table('mytable') [... incomplete query]
foreach ($searchWords as $word) {
->where('firstname', 'like', '%' . $word . '%')
->orWhere('lastname', 'like', '%' . $word . '%')
->orWhere('address', 'like', '%' . $word . '%')->AND [... next word]
}
これは単純に未処理クエリを使用していないかどうかです。私は各単語ごとに別々のクエリを実行し、PHPを使って結果をマージ/操作することができますが、これは伝統的なMySQLの1つのクエリでできることは非常に面倒です。
私が何をしようとしているため、従来のMySQLのクエリは次のようになります。
SELECT * FROM `mytable`
WHERE (firstame LIKE '%$cat%' OR lastname LIKE '%cat%' OR address LIKE '%cat%')
AND (firstname LIKE '%sat% OR lastname LIKE '%sat%' OR address LIKE '%sat%')
AND [etc, etc, for all words in user input]
私は自然検索に「マッチする」と考えることをお勧めします。あなたは何をしようとしているのですか?私は悪いデザイン/解決策だと思っています –
@ fred2この質問はもう助けが必要ですか? – Alphonsus
@Alphonsus - 私はあなたの答えは完璧でなければならないと思う、ありがとう – fred2