第27回 Laravelでデータベースの操作

公開日:2021-04-29 更新日:2021-04-30

1. 概要

Laravelでデータベースの操作をする方法について説明しています。
環境は前回と同じものを使います。

通常データベースの操作はSQLを使って行いますが、
Laravelでデータベースの操作を行う場合、
Eloquentと言うORM(ORM:Object-relational mapping)を使用します。

ORMは、オブジェクトとテーブルの関連付けをして、
SQLを使わずに、オブジェクトを操作して、データベースの操作を行います。

2. 動画



3. モデルの作成

php artisan make:model のモデル名
 
(例)
php artisan make:model Article

テーブル名は複数形にしますが、モデル名は単数形します。
コマンドを実行すると、app/Models 配下にモデルが作成されます。

4. 全データの取得

// データの取得
$articles = \App\Models\Article::all();

// 表示
foreach ($articles as $article) {
	var_dump($article->id);
	var_dump($article->title);
	var_dump($article->body);
}

5. SQLの出力

DBの操作を行う前に次のコードを実行しておくと、
SQLが出力されるようになります。
DB::listen(function ($query) {
	var_dump($query->sql);
});
アプリ全体で常にSQLを出力したい場合は、
app/Providers/AppServiceProvider.php の boot() に書いてください。

6. 指定したIDのデータの取得

$article = \App\Models\Article::find(1);

7. データの更新

$article->title = 'abc';
$article->body  = 'def';
$article->save();

8. データの削除

$article->delete();

9. データの追加


9. 1 モデルに設定可能なプロパティの指定

モデルに $fillable と言うプロパティを追加して、設定可能なプロパティを指定します。
protected $fillable = ['title', 'body'];

9.2. モデルの生成

コンストラクタに連想配列で初期値を指定します。
余分な値は、$fillable によってはじかれます。
$article = new \App\Models\Article([
	'title' => 'title 1', 
	'body'  => 'body 1',
	'aaa'   => 'aaa',
	'bbb'   => 'bbb',
]);

9.3. データの追加

データの更新と同じく save() を呼ぶだけです。
$article->save();

10. 検索条件を指定してデータの取得

$article  = \App\Models\Article::where('id', ">=", 1)->first();
$articles = \App\Models\Article::where('title', 'like', '%test%')->get();
$articles = \App\Models\Article::where('id', ">=", 1)->select(['title', 'body'])->orderBy('id', 'desc')->get();
where() や select() などの戻り値は、
Illuminate\Database\Eloquent\Builder になるため、
データを取得する際には、
all() や find() の代わりに、get() や first() を使う必要があります。