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

Wir stellen 9 nützliche Laravel Eloquent-Funktionen vor

藏色散人
Freigeben: 2021-03-17 09:12:13
nach vorne
2174 Leute haben es durchsucht

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 字段就是制定只查找这两个字段
Nach dem Login kopieren

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 的基本数据就是一样的
Nach dem Login kopieren

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
Nach dem Login kopieren

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

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';
}
Nach dem Login kopieren

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

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

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

$user->getChanges()
//[
     "name" => "GeiXue",
  ]
Nach dem Login kopieren

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

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

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

$user->isDirty('name');    //true
$user->isDirty('age');     //false
Nach dem Login kopieren

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

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

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

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

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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage