通常、EloquentのwhereInは、フィールドの値とoptionsを持つ配列を比較します。私はそれを逆にし、フィールドに複数のオプションをオプションを比較したい:Laravel WhereInフィールド内に複数のオプションがある
フィールドには「オプション1、オプション2、オプション3」これが可能である
Model::whereIn('field', 'option1')->get();
が含まれていますか?
通常、EloquentのwhereInは、フィールドの値とoptionsを持つ配列を比較します。私はそれを逆にし、フィールドに複数のオプションをオプションを比較したい:Laravel WhereInフィールド内に複数のオプションがある
フィールドには「オプション1、オプション2、オプション3」これが可能である
Model::whereIn('field', 'option1')->get();
が含まれていますか?
あなたはLIKE
を使用してクエリを行うことができます。構文の
Model::where('field', 'LIKE', '%option1%')->get();
ドキュメントがここにあります:http://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html
あなたはいつもあなたが使用できるoption1,option2,option3,
のような、でも最後の選択肢の後にコンマ,
を追加する場合より堅牢なフィルタのビット:
Model::where('field', 'LIKE', '%option1,%')->get();
開始時にコンマそれが重要な場合は、他のセパレータ)は、それがさらに良くなるだろう:あなたのオプションの一つが最後に別のものと類似している場合は、可能なカテゴリとしてfish
とgoldfish
を持っている場合
Model::where('field', 'LIKE', '%,option1,%')->get();
は、そうでなければ、あなたが(問題を持つことができ、LIKE ',fish,'
を使用してはfish
とgoldfish
の両方に一致しますが、goldfish
と一致しないことが保証されます。
私はそのようなあなたのカテゴリを格納するのにお勧めしたい:/fish/goldfish/water/
、その後、あなたは複数の値が必要な場合は関係なく、フィールドを持つ専用のテーブルをすることができ、データベースの設計を変更することを検討すべきであるLIKE '%/yourcategory/%'
を使用してフィルタリングします複数の値を持つ – AntoineB
私は知っていますが、それはカテゴリに基づいてアイテムを表示する非常に簡単な方法です。私はこのために自分のデータベース設計を過度に複雑化したくありません。 – klaaz
あなた自身の問題に基づいて見ることができますが、それは良い解決策ではありません。 – AntoineB