モデルを使った検索は、
whereメソッドをいかに使いこなすか、ということでもあります。whereには、2つの引数を持った形だけでなく、3つの引数を持つ形も用意されています。
where( 項目 , 演算子 , 値 )
こんな形ですね。2つの引数だった場合は、単純に「項目 = 値」のものを検索しましたが、
演算子を指定することでその他の検索も可能になったわけです。
この第2引数の演算子には、
「=」「>」「<」といった比較のための演算記号が一通り指定できます。また、テキストの
あいまい検索を行うために「
like」を指定することもできます。例えば、
$data = MyTable::where('name', 'like', 'yamada%')->get();
こんな具合に検索すれば、
nameが「
yamada」で始まるレコードを全て検索することができます。
%は、ワイルドカードで、この後にどんなテキストが来てもOK、ということを示します。
■andとor検索
複数の検索条件を指定したい場合はどうするのでしょうか。これには、大きく2つのものがあります。
and検索と
or検索と呼ばれるものです。
・and検索複数の条件のすべてに合致するものだけを検索するものです。これは、実は
whereだけで作ることができます。
モデル::where(条件1)->where(条件2)
このように、必要なだけ
whereをつなげていけばいいのです。こうすることで、条件1で絞りこまれた中から更に条件2で絞り込んだ結果を得ることができます。
・or検索複数の条件のいずれかに合致するものを全て検索するものです。これは、「
orWhere」というメソッドを利用します。これは、基本的に
whereと同じ使い方です。
モデル::where(条件1)->orWhere(条件2)
このように、
whereの後に
orWhereを付けて呼び出します。これにより、条件1での絞り込みに、条件2の絞り込みを追加し、どちらか一方でも合致すれば検索されるようになります。
とりあえず、このぐらいのことが頭に入っていれば、基本的な検索はひと通り行えるようになります。特に、3つの引数を持つ
whereは非常によく使いますので、実際にいろいろと試して使い方をマスターしておきましょう。