ホームページ  >  記事  >  PHPフレームワーク  >  Laravel Eloquentのスキルシェア(例解説)

Laravel Eloquentのスキルシェア(例解説)

不言
不言転載
2019-01-23 10:41:502376ブラウズ

この記事は、Laravel Eloquent に関するスキルの共有 (例) を提供します。必要な友人が参考になれば幸いです。

Laravel は機能が豊富なフレームワークです。ただし、利用可能なすべての機能を公式ドキュメントから見つけることはできません。ここでは、あまり知られていない機能をいくつか紹介します。

1. 元の属性を取得する

Eloquent モデル レコードを変更する場合、getOriginal() メソッドを呼び出すことでレコードの元の属性を取得できます。

$user = App\User::first();
$user->name;                   //John

$user->name = "Peter";         //Peter

$user->getOriginal('name');    //John
$user->getOriginal();          //原始 $user 记录

2. モデルが変更されたかどうかを確認する

isDirty() メソッドを使用して、モデルまたは特定の属性が変更されたかどうかを確認します。

指定した属性が変更されているかどうかを確認することもできます。

$user = App\User::first();
$user->isDirty();          //false

$user->name = "Peter";
$user->isDirty();          //true

3. 変更されたプロパティを取得します

getChanges() を使用して変更されたプロパティを取得します

$user->isDirty('name');    //true
$user->isDirty('age');     //false
注: syncChanges() を使用してモデルを保存する場合のみまたは同期します。更新された場合にのみ有効になります。

4.deleted_at フィールドを定義します。

Laravel は、デフォルトで、deleted_at フィールドを使用して論理的な削除を処理します。 DELETED_AT 属性を定義することで変更できます。

$user->getChanges()

//[
     "name" => "Peter",
  ]
またはアクセスを定義します

class User extends Model
{
    use SoftDeletes;

     * The name of the "deleted at" column.
     *
     * @var string
     */
    const DELETED_AT = 'is_deleted';
}

5. モデルとリレーションシップを保存します

push() メソッドを使用してモデルとそのモデルを保存できます。関係。

class User extends Model
{
    use SoftDeletes;

    public function getDeletedAtColumn()
    {
        return 'is_deleted';
    }
}

6. モデルを再ロードします

fresh() を使用してデータベースからモデルを再ロードします。

class User extends Model
{
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

$user = User::first();
$user->name = "Peter";

$user->phone->number = '1234567890';

$user->push(); // 这将更新数据库中的用户和电话
7. 既存のモデルを再ロードする

refresh() メソッドを使用して、データベースから新しい値を使用して既存のモデルを再ロードできます。

$user = App\User::first();
$user->name;               // John

// user 表被其他进程修改。 例:数据库又插入一条 “name” 为 “Peter” 的数据。

$updatedUser = $user->fresh();
$updatedUser->name;       // Peter

$user->name;              // John
注:refresh() は、モデルに関連付けられたモデル データも更新します。

8. モデルが同じかどうかを確認します

is() メソッドを使用して、2 つのモデルが同じ主キーを持ち、同じテーブルに属しているかどうかを確認します。

$user = App\User::first();
$user->name;               // John

// user 表被其他进程修改。例: “name” 被修改为 “Peter” 。

$user->refresh();
$user->name;              // Peter

9. モデルのクローンを作成する

replicate() メソッドを使用して、モデルを新しいオブジェクトにコピーできます。

$user = App\User::find(1);
$sameUser = App\User::find(1);
$diffUser = App\User::find(2);

$user->is($sameUser);       // true
$user->is($diffUser);       // false

10. find() メソッドで検索属性を指定します。

find() または findOrFail() メソッドを使用する場合、2 番目のパラメータを渡すことができます。検索するプロパティを指定します。

rreeee


以上がLaravel Eloquentのスキルシェア(例解説)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。