Heim  >  Artikel  >  PHP-Framework  >  Laravel Eloquent Skill Sharing (Beispielerklärung)

Laravel Eloquent Skill Sharing (Beispielerklärung)

不言
不言nach vorne
2019-01-23 10:41:502376Durchsuche

Der Inhalt dieses Artikels befasst sich mit dem Teilen von Laravel Eloquent-Fähigkeiten (Beispielerklärung). Ich hoffe, dass er für Sie hilfreich ist.

Laravel ist ein funktionsreiches Framework. Allerdings werden Sie nicht alle verfügbaren Funktionen in der offiziellen Dokumentation finden können. Hier sind einige Funktionen, die Sie vielleicht noch nicht kennen.

1. Holen Sie sich die Originalattribute

Wenn Sie einen Eloquent-Modelldatensatz ändern, können Sie die Originalattribute des Datensatzes abrufen, indem Sie die Methode getOriginal() aufrufen

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

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

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

2. Überprüfen Sie, ob das Modell geändert wurde

Verwenden Sie die Methode isDirty(), um festzustellen, ob das Modell oder ein bestimmtes Attribut geändert wurde

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

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

Sie können auch überprüfen, ob das angegebene Attribut geändert wurde.

$user->isDirty('name');    //true
$user->isDirty('age');     //false

3. Rufen Sie die geänderten Attribute ab

Verwenden Sie getChanges(), um die geänderten Attribute abzurufen

$user->getChanges()

//[
     "name" => "Peter",
  ]
Hinweis: Nur wenn Sie syncChanges() zum Speichern verwenden modellieren oder synchronisieren Es wird nur wirksam, wenn es aktualisiert wird

4. Definieren Sie das Feld „deled_at“

Standardmäßig verwendet Laravel das Feld „deled_at“, um vorläufige Löschungen durchzuführen. Sie können es ändern, indem Sie das Attribut DELETED_AT definieren.

class User extends Model
{
    use SoftDeletes;

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

oder definieren Sie den Zugriff

class User extends Model
{
    use SoftDeletes;

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

5. Speichern Sie das Modell und die Beziehungen

Sie können die Methode push() verwenden, um das Modell und seine Beziehungen zu speichern Beziehungen.

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

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

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

$user->push(); // 这将更新数据库中的用户和电话

6. Laden Sie das Modell neu

Verwenden Sie fresh(), um ein Modell aus der Datenbank neu zu laden.

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

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

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

$user->name;              // John

7. Vorhandenes Modell neu laden

Sie können die Methode „refresh()“ verwenden, um ein vorhandenes Modell mit neuen Werten aus der Datenbank neu zu laden.

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

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

$user->refresh();
$user->name;              // Peter
Hinweis: restart() aktualisiert auch die mit dem Modell verknüpften Modelldaten.

8. Überprüfen Sie, ob die Modelle gleich sind

Verwenden Sie die Methode is(), um festzustellen, ob die beiden Modelle denselben Primärschlüssel haben und zur selben Tabelle gehören.

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

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

9. Ein Modell klonen

Sie können die Methode „replicate()“ verwenden, um ein Modell in ein neues Objekt zu kopieren.

$user = App\User::find(1);
$newUser = $user->replicate();

$newUser->save();

10. Geben Sie das Suchattribut in der find()-Methode an

Bei Verwendung der find()- oder findOrFail()-Methode können Sie den zweiten Parameter übergeben Geben Sie die zu suchenden Eigenschaften an.

$user = App\User::find(1, ['name', 'age']);

$user = App\User::findOrFail(1, ['name', 'age']);

Das obige ist der detaillierte Inhalt vonLaravel Eloquent Skill Sharing (Beispielerklärung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen