Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Laravel】Eloquentを使ってデータの追加を行う!

PHPバージョン:7.1.14
Laravelバージョン:5.7.9

前回までで、
Eloquentを使いデータベースからデータを取り出し
Viewに表示するところまで進みました!

今回はデータの追加を行っていきます!


データの追加

Eloquentによるデータの追加方法には大きく2つあります!

saveメソッド

まずはsaveメソッドです!

$article = new Article();
$article->name = '記事タイトル';
$article->body = '記事内容';
$user->save();

Model型でnewしてオブジェクトを作成し、
name, bodyの各フィールドに値を代入します。
最後にsave()メソッドの実行でデータの追加完了です。

createメソッド

2つ目はcreateメソッドです!

Article::create([
    'title' => '記事タイトル',
    'body' => '記事内容',
]);

create()メソッドを使う場合はnewする必要はなく、
またsave()メソッドを実行する必要もありません。
楽です。

ただこのままだと
<span style="color: #ff0000"><b>MassAssignmentException</b></span>
というエラーが出てしまいます。
Modelにて$fillableフィールドもしくは$guardedフィールドを設定する必要があります。
$fillableも$guardedも、どちらも予期せぬ値が代入されるのを防ぐ機能です。

*** $fillableフィールド
$fillableは、代入を許可する値を指定します。
逆に言うと$fillableに指定されていない値へは代入することはできません。
>|php|
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
// ***** 開始 *****
    protected $fillable = array('title', 'body');
// ***** 終了 *****
}

app>Models>Article.php

Modelクラスに定義されているフィールドです。
Articleクラスにてオーバーライドして値を設定しています。
これでMassAssignmentExceptionは発生しなくなりました。

$guardedフィールド

$guardedフィールドは、$fillableの真逆です。
代入を禁止する値を指定します。
逆に言えば$guardedに指定されていない値は代入できます。

例えばidなんかは外部から変更されたら困る値の代表です。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
// ***** 開始 *****
    protected $guarded = array('id');
// ***** 終了 *****
}

app>Models>Article.php

この状態で実行しても、
$fillableを設定した時と同様エラーは起こりません。

$fillableと$guardedは片方だけ設定しておけば十分です。

今回はここまでです、ありがとうございました〜!