余計な項目を表示させない 今後は逆に JSON に表示させる必要のない項目を隠すための記述を追加します。
例えば下記のようにコントローラーから モデルクラスのインスタンスを返却すると、 自動的にモデルのデータが JSON に変換されます。
アクセサとミューテタ
Dateフォーマット
Dateフォーマット デフォルトのタイムスタンプフォーマットは'Y-m-d H:i:s'です
タイムスタンプフォーマットをカスタマイズする必要があるなら、モデルの$dateFormatプロパティを設定してください。 このプロパティは日付属性がデータベースにどのように保存されるかと同時に、 モデルが配列やJSONにシリアライズされる時のフォーマットを決定します。
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model { /** * モデルの日付カラムの保存形式 * * @var string */ protected $dateFormat = 'U'; }
attach / detach
多対多関係 attach/detach 多対多リレーションを操作時により便利なように、Eloquentはヘルパメソッドをいくつか用意しています。例としてユーザーが多くの役割を持ち、役割も多くのユーザーを持てる場合を考えてみましょう。モデルを結びつけている中間テーブルにレコードを挿入することにより、ユーザーに役割を持たせるにはattachメソッドを使います。
$user = App\User::find(1); $user->roles()->attach($roleId);
モデルにリレーションを割りつけるときに中間テーブルに挿入したい追加のデータを配列で渡すこともできます。
$user->roles()->attach($roleId, ['expires' => $expires]);
もちろんユーザーから役割を削除する必要がある場合もあるでしょう。多対多リレーションのレコードを削除するにはdetachメソッドを使います。detachメソッドは中間テーブルから対応するレコードを削除します。しかし両方のモデルはデータベースに残ります。
// ユーザーから役割を一つ切り離す $user->roles()->detach($roleId); // ユーザーから役割を全部切り離す $user->roles()->detach();
便利なようにattachとdetachの両方共にIDの配列を指定することができます。
$user = App\User::find(1); $user->roles()->detach([1, 2, 3]); $user->roles()->attach([ 1 => ['expires' => $expires], 2 => ['expires' => $expires] ]);