Heim  >  Artikel  >  PHP-Framework  >  Wir stellen 9 nützliche Laravel Eloquent-Funktionen vor

Wir stellen 9 nützliche Laravel Eloquent-Funktionen vor

藏色散人
藏色散人nach vorne
2021-03-16 17:16:242116Durchsuche

In der folgenden LaravelTutorial-Kolumne werden neun nützliche Laravel Eloquent-Funktionen vorgestellt und geteilt. Ich hoffe, dass sie Freunden in Not hilfreich sein werden! Neun nützliche Funktionen von Laravel Eloquent In diesem Artikel werden zehn leistungsstarke Funktionen von Laravel Eloquent vorgestellt.

Wir stellen 9 nützliche Laravel Eloquent-Funktionen vor1. Leistungsstärkere find()-Methode

Wenn viele Entwickler die find()-Methode verwenden, übergeben sie hier normalerweise nur einen ID-Parameter. Tatsächlich können wir auch Enter übergeben zweiter Parameter: Geben Sie das Feld an, das in der Methode find() gefunden werden soll

$user = App\User::find(1, ['name', 'age']);
$user = App\User::findOrFail(1, ['name', 'age']);
// 这里面的 name 和 age 字段就是制定只查找这两个字段

2. Klonen Sie das Modell

Verwenden Sie die Methode replicate() direkt Damit wir ganz einfach eine Kopie des Modells erstellen können:

$user = App\User::find(1);
$newUser = $user->replicate();
$newUser->save();
// 这样,$newUser 和 $user 的基本数据就是一样的

3. Überprüfen Sie, ob das Modell dasselbe ist. find() 方法的时候,通常就只是在这里传入一个 ID 的参数,其实我们也是可以传入第二个参数的:find() 方法中指定需要查找的字段

$user = App\User::find(1);
$sameUser = App\User::find(1);
$diffUser = App\User::find(2);
$user->is($sameUser);       // true
$user->is($diffUser);       // false

2.克隆 Model
直接使用 replicate() 方法即可,这样我们就很容易地创建一个 Model 的副本:

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 的数据同时更新到数据库中

3.检查 Model 是否相同
使用 is() 方法检查两个 Model 的 ID 是否一致,是否在同一个表中:

class User extends Model
{
    use SoftDeletes;
     * The name of the "deleted at" column.
     *
     * @var string
     */
    const DELETED_AT = 'deleted_date';
}

4.在关联模型中同时保存数据
使用 push() 你可以在保存模型数据的同时,将所关联的数据也保存下来:

class User extends Model
{
    use SoftDeletes;
    public function getDeletedAtColumn()
    {
        return 'deleted_date';
    }
}

5.自定义 deleted_at 字段
如果你使用过 Laravel 的软删除 Soft Delete 的话,你应该就知道其实 Laravel 在标记一个记录为已删除的状态其实是用 deleted_at 这个字段来维护的,其实你是可以自定义这个字段的:

$user->getChanges()
//[
     "name" => "GeiXue",
  ]

或者你这样自定义也可以:

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

6.获取已修改的 Model 属性
使用 getChanges() 方法获取已被修改的属性:

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

7.检查 Model 是否被修改
使用 isDirty() 方法就可以检测模型中的数据是否被修改:

$user = App\User::first();
$user->name;                   //JellyBool
$user->name = "GeiXue";         //GeiXue
$user->getOriginal('name');    //JellyBool
$user->getOriginal();          //Original $user record

在使用 isDirty() 的时候,你也可以直接检测某个属性是否被修改:

$user = App\User::first();
$user->name;               // JellyBool
// 这个时候在其他地方,该用户的名字被更新为 GeiXue,你可以使用 refresh 来刷新,而不用退出 tinker
$user->refresh(); 
$user->name;              // GeiXue

8.获取 Model 的原始数据
在给 Model 的属性赋予新值的时候,你可以通过 getOriginal() 来获取原来的值:

rrreee

9.刷新 Model 的数据
使用 refresh() 刷新 Model 的数据,这在你使用 tinker

Verwenden Sie die Methode is(), um zu überprüfen, ob die IDs der beiden Modelle übereinstimmen konsistent sind und ob sie sich in derselben Tabelle befinden:

rrreee4. Speichern Sie gleichzeitig die Daten im zugehörigen Modell.

Verwenden Sie push(). Sie können die zugehörigen Daten beim Speichern speichern Modelldaten:
rrreee🎜🎜5. Passen Sie das Feld „deled_at“ an🎜🎜Wenn Sie Laravel’s Soft Delete verwendet haben, sollten Sie wissen, dass Laravel tatsächlich deleted_at verwendet, um einen Datensatz als gelöscht zu markieren Tatsächlich können Sie dieses Feld anpassen: 🎜rrreee🎜 Oder Sie können es wie folgt anpassen: 🎜rrreee🎜🎜6. Holen Sie sich die geänderten Modellattribute🎜🎜Verwenden Sie die Methode getChanges(), um geänderte Attribute abzurufen: 🎜 rrreee🎜🎜7. Überprüfen Sie, ob das Modell geändert wurde🎜🎜Verwenden Sie die Methode isDirty(), um zu erkennen, ob die Daten im Modell geändert wurden: 🎜rrreee🎜Verwenden Sie isDirty() können Sie auch direkt erkennen, ob ein Attribut geändert wurde: 🎜rrreee🎜🎜8 Holen Sie sich die Originaldaten des Modells🎜🎜Wenn Sie den Attributen des Modells neue Werte zuweisen, können Sie die erhalten Originalwert durch getOriginal(): 🎜rrreee🎜🎜9. Aktualisieren Sie die Daten des Modells🎜🎜Verwenden Sie refresh(), um die Daten des Modells zu aktualisieren Besonders nützlich bei der Verwendung von tinker: 🎜rrreee🎜🎜Endlich🎜🎜Die neun oben genannten Eloquent-Funktionen sind in bestimmten Anwendungsszenarien tatsächlich sehr nützlich. Ich hoffe, sie können Ihnen bei der Entwicklung eines Laravel-Projekts helfen. 🎜🎜

Das obige ist der detaillierte Inhalt vonWir stellen 9 nützliche Laravel Eloquent-Funktionen vor. 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