1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Laravel】クエリビルダ

Last updated at Posted at 2020-07-22

この記事は以下の書籍を参考に執筆しました。

#クエリビルダ
これを使うとメソッドチェーンでDBアクセスができる
##クエリビルダとは
PHPで書いてるのにSQLクエリという別言語で書いていくのってなんか違くない?
ということで用意されたのがクエリビルダ

メソッドを呼び出していくだけでDBアクセスができる。

##DB::tableとget
テーブルの全レコードを取得

###DB::table

$変数=DB::table('テーブル名');

出典:PHPフレームワークLaravel入門 第2版

####get
取得するフィールドを特定する場合は引数を利用する
例えばget['id','name']とすればidとnameフィールドだけを取り出せる。
省略すると全フィールドを取得

戻り値は各レコードの値をオブジェクトにまとめたものが保管される。

##特定レコードの取得
###showメソッド

$item=DB::table('people')->where('id', $id)->first();

出典:PHPフレームワークLaravel入門 第2版

####where

where('フィールド名', )

出典:PHPフレームワークLaravel入門 第2版

SQLのwhere フィールド名=値のような感じ

####first
最初のレコードを返す
getはすべてだがfirstは最初のものだけ

1つしかレコードが無いとわかっているものはfirstを使う

##演算記号を指定した検索
whereに3つの引数をもたせるとより複雑な検索ができる。

where(フィールド名,演算記号, )

出典:PHPフレームワークLaravel入門 第2版

###例
where('id','>', 5)とすれば
IDが5より大きいものを検索できる。
###whereとorWhere
####すべての条件に合致するものだけを検索

where(...)->where(...)

出典:PHPフレームワークLaravel入門 第2版

####条件に1つでも合致すればすべて検索

where(...)->orWhere(...)

出典:PHPフレームワークLaravel入門 第2版

##like検索

フィールド名 like '%テキスト%'

出典:PHPフレームワークLaravel入門 第2版

そこにどんな文字があってもOK検索
例えば%abc%ならabcの前後にどんなテキストがあってもOK
##whereRawによる条件検索
whereをいくつもつなぎ合わせるよりも条件を指定して検索できる

whereRaw(条件式,パラメータ配列)

出典:PHPフレームワークLaravel入門 第2版

    public function show(Request $request)
    {
        $min=$request->min;
        $max=$request->max;
        $items=DB::table('people')->whereRaw('age >= ? and age <= ?', [$min,$max])->get();
        return view('hello,show',['items'->$items]);
    }

出典:PHPフレームワークLaravel入門 第2版

/show?min=20&max=50とアクセスすればあげあ20以上50以下のものを検索する。

age >= ? and age <= ?

?のところにパラメータ配列が入る。
whereRawのプレースホルダは?になる。:nameという形式ではない

##並び順を指定

orderBy(フィールド名,'ascまたはdesc')
名前 説明
asc 昇順(1234,abcd..あいうえお)
desc 降順(4321,dcba)
getメソッドの前に書く

###例

$items=DB::table('people')->oderBy('age','asc')->get();

出典:PHPフレームワークLaravel入門 第2版

##ofsetとlimit
大量のレコードが有る場合はそこから部分的に取り出して表示するほうが楽

###指定した位置からレコードを取得

ofset(整数)

例えばofset(10)なら最初から10個分だけ移動して11個めから取得する
###指定した数だけレコードを収録

limit(整数)

limit(10)なら10個だけ取得
##insertによるレコード追加

DB::table(...)->insert(データをまとめた配列)
    public function create(Request $request)
    {
        $param=[
        'name'=>$request->name,
        'mail'=>$request->mail,
        'age'=>$request->age,
      ];
        DB::table('people')->insert($param);
        return redirect('/hello');
    }

出典:PHPフレームワークLaravel入門 第2版

##updateによるレコード更新

DB::table(...)->where(更新対象の指定)->update(配列);

出典:PHPフレームワークLaravel入門 第2版

updateはinsertと同じ
ただしwhereでどのレコードを更新するのかを指定してあげないとすべてのレコードが更新されてしまう

#参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?