フレームワーク

LaravelでDBのCRUD操作をする

フレームワーク

DB操作

システム上からデータの取得や更新を行う為に、DBの基本操作であるCRUDをプログラミング言語(PHP等)から実行します。例えば、画面で更新というボタンを押したら、プログラミング言語からDBへUPDATE文を流してと命令が送られて、DB上でUPDATE文が実行されるという仕組みです。フレームワークを使えば、データの更新なども簡単に行うことが出来ます。

※CRUDについては以下記事で解説しています。
【MySQL入門③】データベースの基本操作CRUDを解説!

今回は、以下テーブルを使ってDB操作を行います。

<profilesテーブル>

idnameageupdated_at
1山田太郎24NULL
2佐藤花子21NULL

データ取得

データ取得はSELECT文を使います。
以下の記事でもデータ取得の方法を1つ紹介しました。(find()を紹介しています。)

LaravelでDB(MySQL)へ接続し、データを取得する

findだと、idを指定するSELECT文しか投げることが出来ません。
そこで、自由にWHERE句を付けれる様な書き方を紹介します。

$value = $インスタンス変数->select(カラム名)->where(カラム名, 条件, 値)->get();

これで、指定したカラムの値を指定した条件で取得することができます。
例えば、ageが22より小さいデータのみを取得する書き方は以下になります。

$profile = new Profile;
$value = $profile->select('id', 'name', 'age')->where('age', '<', 22)->get();

結果、$valueにはid=2のデータのみ取得されます。

idnameage
2佐藤花子21

<実行SQL>

SELECT id, name, age FROM profiles WHERE age < 22;

ただ、値の取り出しには注意してください。
findの場合は、取得されるレコードが1レコードとなっているため、$value[‘キー’]で値をとりだせました。
selectの場合は、複数レコードが取得されることがあるため、1レコードしか取得されなくても、自動的に2次元配列になります。

<html>
  <head>
    <title>HelloWorld</title>
  </head>
  <body>
    <a>{{ $value[0]['id'] }}</a>
    <a>{{ $value[0]['name'] }}</a>
    <a>{{ $value[0]['age'] }}</a>
  </body>
</html>

複数レコードを取得した場合は、「0,1,2・・・」と数字が増えていきます。

データ追加

データの追加はINSERT文を使います。

$インスタンス変数->insert([カラム名 => 値]);

カンマ区切りで複数カラムへ値を入れることができます。
以下データを新規追加してみます。

idnameage
3田中一34
$profile->insert(['id' => 3, 'name' => '田中一', 'age' => 34]);

profilesテーブルの中身を確認すると、田中一のデータが追加されているはずです。

<実行SQL>

INSERT INTO profiles (id, name, age) VALUES (3, '田中一', 34);

データ更新

データの更新はUPDATE文を使います。

$インスタンス変数->where(カラム名, 条件, 値)->update([カラム名 => 値]);

UPDATE文はWHERE句を付けないと全てのデータが更新されてしまうので、必ず付ける様にしてください。
山田太郎のageを27にUPDATEしてみます。

$profile->where('id', 1)->update(['age' => 27]);

WHERE句に関して、where(‘id’ , ‘=’, 1)と書いても良いですが、カラムと値が等しいかを比べる場合は、第2引数に値を指定することで比較できます。

また、updated_atが自動的に更新されるので、テーブルにupdated_atのカラムが存在しない場合は、エラーになります。

<実行SQL>

UPDATE profiles SET age = 27 WHERE id = 1;

データ削除

データの削除はDELETE文を使います。

$インスタンス変数->where(カラム名, 条件, 値)->delete();

UPDATE文と同様に、WHERE句を付けないと全てのデータが削除されてしまうので、必ず付ける様にしてください。
佐藤花子のデータをDELETEしてみます。

$profile->where('id', 2)->delete();

<実行SQL>

DELETE FROM profiles WHERE id = 2;

まとめ

Laravelのクエリビルダを使ってCRUDを行いました。
簡単にデータの取得から削除まで実装することができます。
様々なWHERE句の条件を書くこともできるので、色々調べて試してみてください。

タイトルとURLをコピーしました