Heim >PHP-Framework >Laravel >Was ist Laravel Orm?

Was ist Laravel Orm?

青灯夜游
青灯夜游Original
2022-02-14 15:07:243641Durchsuche

In Laravel lautet der vollständige Name von orm „Object-Relational Mapping“, was „objektrelationale Zuordnung“ bedeutet. Seine Funktion besteht darin, auf diese Weise eine Zuordnung zwischen einer relationalen Datenbank und Geschäftsentitätsobjekten vorzunehmen Um mit SQL-Anweisungen umzugehen, müssen Sie nur die Eigenschaften und Methoden des Objekts bedienen.

Was ist Laravel Orm?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Laravel 6-Version, Dell G3-Computer.

Was ist ORM? ORM, der vollständige Name ist Object-Relational Mapping (Objekt-Relationales Mapping). Seine Funktion besteht darin, eine Zuordnung zwischen der relationalen Datenbank und Geschäftsentitätsobjekten vorzunehmen GeschäftsobjekteSie müssen sich nicht mehr mit komplexen SQL-Anweisungen befassen, sondern müssen lediglich die Eigenschaften und Methoden des Objekts bedienen.

ORM-Implementierungsmethode

Die beiden häufigsten Implementierungsmethoden sind ActiveRecord und DataMapper (ersteres wird in Laravel verwendet)

ActiveRecord (sehr beliebt) weist eine Eins-zu-Eins-Entsprechung zwischen dem Modell und den Daten auf Tabelle,
  • Modelle und Datentabellen sind in DataMapper vollständig getrennt.
  • Laravels Eloquent ORM verwendet die ActiveRecord-Implementierung. Jede Eloquent-Modellklasse entspricht einer Tabelle in der Datenbank. Wir können die Datenbank hinzufügen, löschen, ändern und abfragen, indem wir die entsprechende Methode der Modellklasse aufrufen.

Verstehen Sie die beiden magischen Funktionen __call () und __callStatic ()

class Test{
    //动态调用的时候 没有找到此函数 则执行__call() 方法
    public function __call($method, $parameters){
        echo 22222222222;
        return (new Rest)->$method(...$parameters);
    }
    //静态调用的时候 没有找到此函数 则执行__callStatic()方法
    public static function __callStatic($method, $parameters){
        echo 1111111111;
        return (new static)->$method(...$parameters);
    }
}

class Rest{
  public function foo($name , $age){
  echo 333;
  dump($name,$age);
  }
}

//先调用了__callStatic(), 在调用__call(), 然后调用 foo();
Test::foo('张三',17);  
//只调用了 __call(), 然后调用 foo();
(new Test())->foo('李四',16);die;
Nachdem wir die Schwierigkeiten der ersten beiden magischen Funktionen in Laravel Eloqument ORM verstanden haben, werfen wir einen Blick auf den Quellcode in Model
/**
 * Handle dynamic method calls into the model. * * @param string $method
  * @param array $parameters
  * @return mixed
 */public function __call($method, $parameters)
{
 if (in_array($method, ['increment', 'decrement'])) {
      return $this->$method(...$parameters);
  }
  return $this->newQuery()->$method(...$parameters);
}

/**
 * Handle dynamic static method calls into the method. * * @param string $method
  * @param array $parameters
  * @return mixed
 */public static function __callStatic($method, $parameters)
{
 return (new static)->$method(...$parameters);
}

neue statische Rückgaben Die Instanz des Aufrufers, new self (), gibt seine eigene Instanz zurück.

Wenn Eloqument zum Abfragen verwendet wird,

$list = Politician::where('party_id', 1)->count();

wo sich die Methode nicht im Modell befindet, wird zuerst die Funktion callStatic() ausgeführt, um die AppModelsPolitician-Instanz abzurufen, und dann wird () aufgerufen. , suchen Sie nach Methoden wie where () count() in der von $this->newQuery () zurückgegebenen Instanz.

Sehen Sie sich die von der newQuery()-Methode zurückgegebene Instanz genauer an. Nachdem Sie diese beiden magischen Funktionen verstanden haben, können Sie die Schwierigkeit überwinden, ORM in Laravel zu implementieren. Der Abfragekonstruktor in

laravel

$list = DB::table('categoty')->get();
Eloquent ORM kapselt tatsächlich die Abfragekonstruktion und erleichtert so die Bedienung. Wenn Sie sich für den Quellcode des Abfragekonstruktors interessieren, können Sie einen Blick darauf werfen

[Verwandte Empfehlungen:

Laravel-Video-Tutorial

]

Das obige ist der detaillierte Inhalt vonWas ist Laravel Orm?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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
Vorheriger Artikel:Was ist Laravel-Elixier?Nächster Artikel:Was ist Laravel-Elixier?