プログラミング学習199日目〜Laravel 書籍で学習 16日目〜
昨日はDBクラスをSQLクエリ文を使ってデータベースの操作をしましたが、今日はDBクラスのクエリビルダを使ってのデータベース操作。
クエリビルダを使ったコントローラはこんな感じ。
public function show(Request $request)
{
$items = DB::table('people')->get();
return view('hello.index',['items'=>$items]);
}
DB::table('people')で指定したテーブルの操作を行えるようにし、->get()でフィールドの値を取得する。get('id', 'name')と引数を指定すれば、指定した分のフィールドの値を取得でき、引数を指定しなければすべてのフィールドの値を取得できます。
指定したidを呼び出す場合は
public function show(Request $request)
{
$id = $request->id;
$items = DB::table('people')->where('id', $id)->first();
return view('hello.show',['items'=>$items]);
}
where('id', $id)でidが$idのものを、first()でそれの最初のレコードを呼び出します。idのように1つしかレコードがないことがわかっているgetではなくfirstを使うようです。1つしかないので戻り値は配列やコレクションではなくオブジェクトになり、レコードがなければnullになります。
演算を利用したもの
DB::table('people')->where('id', '<=', $id)->get();
複数の条件を設定したもの
public function show(Request $request)
{
$name = $request->search;
$items = DB::table('people')
->where('name','like', '%' . $name . '%')
->orWhere('mail', 'like', '%' . $name . '%')
->get();
return view('hello.show',['items'=>$items]);
}
必要なデータを得るにはこのような条件設定が必須ですので重要な部分だと思います。調べればわかることではありますが、簡単なことぐらいは覚えておいたほうが後々調べる場合にも効率がいいような気がしますので、記憶にとどめておきたいと思います。