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

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

不言
リリース: 2019-01-23 10:41:50
転載
2442 人が閲覧しました

この記事は、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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート