Laravel を使用する開発者にとっては、驚くかもしれませんが、Eloquent モデルはこの記事では、Laravel Eloquent の 10 個の強力な機能を紹介します。
1. より強力な find() メソッド
多くの開発者が find()
メソッドを使用する場合、通常は単にID パラメーターの 2 番目のパラメーターも渡します: find() メソッドで見つかるフィールドを指定します
$user = App\User::find(1, ['name', 'age']); $user = App\User::findOrFail(1, ['name', 'age']); // 这里面的 name 和 age 字段就是制定只查找这两个字段
2 .Clone Model
replicate() メソッドを使用するだけで、モデルのコピーを簡単に作成できます:
$user = App\User::find(1); $newUser = $user->replicate(); $newUser->save(); // 这样,$newUser 和 $user 的基本数据就是一样的
3. モデルが同じかどうかを確認します。
is() メソッドを使用して、2 つのモデルの ID が一致しているかどうか、およびそれらが同じテーブル内にあるかどうかを確認します:
$user = App\User::find(1); $sameUser = App\User::find(1); $diffUser = App\User::find(2); $user->is($sameUser); // true $user->is($diffUser); // false
4。関連するモデルで データを同時に保存します。Use
push() モデル データを保存するときに、関連するデータも保存できます:
class User extends Model { public function phone() { return $this->hasOne('App\Phone'); } } $user = User::first(); $user->name = "GeiXue"; $user->phone->number = '1234567890'; $user->push(); // 最后这一行 push() 会将 user 的数据和 phone 的数据同时更新到数据库中
5。カスタムのdeleted_atフィールドLaravelのソフト削除を使用したことがある場合は、Laravelが実際にレコードを削除済みとしてマークするために
deleted_atフィールドを使用することを知っておく必要があります。メンテナンス、実際、このフィールドはカスタマイズできます。 :
class User extends Model { use SoftDeletes; * The name of the "deleted at" column. * * @var string */ const DELETED_AT = 'deleted_date'; }
class User extends Model { use SoftDeletes; public function getDeletedAtColumn() { return 'deleted_date'; } }
6. 変更されたモデル属性を取得します
getChanges() を使用します。変更された属性を取得するメソッド:
$user->getChanges() //[ "name" => "GeiXue", ]
7. モデルが変更されたかどうかを確認する Use
isDirty() このメソッドは、モデル内のデータが変更されたかどうかを検出できます。モデルが変更されました:
$user = App\User::first(); $user->isDirty(); //false $user->name = "GeiXue"; $user->isDirty(); //true
isDirty() を使用すると、特定の属性が変更されたかどうかを直接検出することもできます:
$user->isDirty('name'); //true $user->isDirty('age'); //false
8.モデルの元のデータモデルのプロパティに新しい値を割り当てる場合、
getOriginal() を通じて元の値を取得できます:
$user = App\User::first(); $user->name; //JellyBool $user->name = "GeiXue"; //GeiXue $user->getOriginal('name'); //JellyBool $user->getOriginal(); //Original $user record
9. モデル データを更新するモデル データを更新するには、
refresh() を使用します。これは、
tinker を使用する場合です。特に便利です:
$user = App\User::first(); $user->name; // JellyBool // 这个时候在其他地方,该用户的名字被更新为 GeiXue,你可以使用 refresh 来刷新,而不用退出 tinker $user->refresh(); $user->name; // GeiXue
最後に #上記の 9 つの Eloquent 機能は、特定のアプリケーション シナリオで実際に非常に役立ちます。Laravel プロジェクトを開発するときに役立つことを願っています。