Rumah  >  Artikel  >  rangka kerja php  >  apa itu laravel orm

apa itu laravel orm

青灯夜游
青灯夜游asal
2022-02-14 15:07:243602semak imbas

Dalam laravel, nama penuh orm ialah "Pemetaan Perkaitan Objek", yang bermaksud "pemetaan hubungan objek". , apabila mengendalikan objek perniagaan, Tidak perlu berurusan dengan pernyataan SQL yang kompleks, hanya mengendalikan sifat dan kaedah objek tersebut.

apa itu laravel orm

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Laravel 6, komputer Dell G3.

Apakah itu ORM , Dengan cara ini, apabila kita mengendalikan objek perniagaan tertentu, kita tidak perlu lagi berurusan dengan pernyataan SQL yang kompleks, kita hanya perlu mengendalikan sifat dan kaedah objek tersebut.

Kaedah pelaksanaan ORM

Dua kaedah pelaksanaan yang paling biasa ialah ActiveRecord dan DataMapper (yang dahulu digunakan dalam laravel)

ActiveRecord (sangat popular) mempunyai surat-menyurat satu-sama-satu antara model dan jadual data, manakala model dan jadual data dalam
  • DataMapper diasingkan sepenuhnya.
  • ORM Eloquent Laravel menggunakan pelaksanaan ActiveRecord Setiap kelas model Eloquent sepadan dengan jadual dalam pangkalan data Kami boleh menambah, memadam, mengubah suai dan membuat pertanyaan pangkalan data dengan memanggil kaedah yang sepadan kelas model.

Memahami dua fungsi sihir __call () dan __callStatic ()

Memahami dua fungsi sihir sebelumnya juga merupakan perkara yang sukar dalam laravel Eloqument ORM yang saya faham , mari kita lihat kod sumber dalam Model

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;

statik baharu mengembalikan contoh pemanggil, diri baharu () mengembalikan contoh sendiri

/**
 * 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);
}
ditanya menggunakan kefasihan Apabila

di mana kaedah tiada dalam Model, fungsi callStatic() akan dilaksanakan terlebih dahulu untuk mendapatkan contoh AppModelsPolitician, kemudian panggilan () akan dilaksanakan, dan di mana () count() akan ditemui dalam instance dikembalikan oleh $this->newQuery () ) dan kaedah lain.

$list = Politician::where('party_id', 1)->count();
Lihat dengan lebih dekat pada contoh yang dikembalikan oleh kaedah newQuery (). Selepas memahami dua fungsi ajaib ini, kesukaran untuk melaksanakan ORM dalam laravel dapat diatasi.

Pembina pertanyaan dalam laravel

ORM yang fasih sebenarnya merangkumkan pembinaan pertanyaan, menjadikannya lebih mudah untuk dikendalikan. Jika anda berminat dengan kod sumber pembina pertanyaan, anda boleh lihat

$list = DB::table('categoty')->get();
[Cadangan berkaitan:

tutorial video laravel

]

Atas ialah kandungan terperinci apa itu laravel orm. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:apakah elixir laravelArtikel seterusnya:apakah elixir laravel