Trik Fasih: Model Laravel daripada Subquery

WBOY
Lepaskan: 2024-08-17 06:50:06
asal
487 orang telah melayarinya

Eloquent Trick: Laravel Model from Subquery

Dalam Laravel, adalah perkara biasa untuk mentakrifkan jadual sepadan model menggunakan sifat jadual, seperti:

class User extends Model {
  protected $table = 'users';
}
Salin selepas log masuk

Walau bagaimanapun, daripada memetakan terus ke jadual, kita boleh menggunakan subkueri. Teknik ini membolehkan kami merangkum pertanyaan kompleks dalam lapisan aplikasi, sama seperti mencipta paparan pangkalan data, tetapi dengan fleksibiliti tambahan operasi Eloquent.

Sebagai contoh, pertimbangkan jadual pengguna yang menyimpan maklumat tentang kedua-dua pentadbir dan pengguna biasa. Kita boleh mencipta model AdminUser menggunakan subquery:

class AdminUser
{
    public function getTable(): string|\Illuminate\Contracts\Database\Query\Expression
    {
        $sql = User::query()
            ->select('id', 'name')
            ->where('admin_user', true)
            ->toRawSql();

        return DB::raw(sprintf('(%s) as admin_users', $sql));
    } 
}
Salin selepas log masuk

Model ini menarik data daripada subkueri (pilih id, nama daripada pengguna dengan admin_user = 1), membolehkan anda menanyakannya sama seperti model standard:

AdminUser::query()->get();
Salin selepas log masuk

atau

AdminUser::query()->first();
Salin selepas log masuk

Walau bagaimanapun, ambil perhatian bahawa pertanyaan tertentu, seperti find(1), tidak akan berfungsi secara langsung:

AdminUser::query()->find(1);
Salin selepas log masuk

Untuk mengatasi perkara ini, anda boleh menggunakan keadaan where digabungkan dengan first():

AdminUser::query()->where('id', 1)->first();
Salin selepas log masuk

Kesimpulan

Contoh yang diberikan ialah ilustrasi yang jelas tentang cara kita boleh menstruktur logik dalam model. Walau bagaimanapun, pendekatan ini boleh ditingkatkan dan disesuaikan untuk menampung senario yang lebih kompleks. Dengan memanfaatkan struktur sedemikian, kami boleh mengurus dan mengekstrak logik yang rumit dengan cekap, memastikan model kami kekal teratur, boleh diselenggara dan berskala apabila ia berkembang dalam kerumitan.

Atas ialah kandungan terperinci Trik Fasih: Model Laravel daripada Subquery. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!