Perhubungan model dalam rangka kerja Yii: melaksanakan perkaitan data
Dalam rangka kerja Yii, hubungan model ialah konsep yang sangat penting, digunakan untuk mencapai perkaitan data antara berbilang jadual data. Dengan mentakrifkan perhubungan perkaitan, data berkaitan boleh diperoleh secara langsung apabila menanyakan data, sekali gus mengurangkan kerumitan pertanyaan dan meningkatkan kecekapan pertanyaan data. Artikel ini akan memperkenalkan perhubungan model dalam rangka kerja Yii secara terperinci, termasuk cara mentakrifkan perhubungan, jenis perhubungan yang berbeza dan cara menggunakan perhubungan untuk menanyakan data.
1. Tentukan perhubungan perkaitan
Dalam rangka kerja Yii, perkaitan data antara jadual data boleh dicapai dengan mentakrifkan perkaitan dalam kelas model. Secara khusus, satu atau lebih kaedah awam ditakrifkan dalam kelas model Kaedah ini menerangkan perkaitan antara jadual data dan jadual data lain dengan memanggil satu siri kaedah perkaitan yang disediakan oleh rangka kerja Yii. Berikut ialah contoh mudah:
class Order extends ActiveRecord { public function getCustomer() { return $this->hasOne(Customer::className(), ['id' => 'customer_id']); } }
Dalam contoh di atas, kami menentukan kaedah perkaitan getCustomer() untuk menerangkan perkaitan antara jadual pesanan (Pesanan) dan jadual pelanggan (Pelanggan). Khususnya, kami menggunakan kaedah hasOne yang disediakan oleh rangka kerja Yii, yang mewakili perhubungan satu-dengan-satu sehala, iaitu, hanya terdapat seorang pelanggan untuk pesanan. Antaranya, parameter pertama menentukan nama kelas model yang berkaitan, dan parameter kedua menentukan hubungan yang sepadan antara kunci asing yang berkaitan dan kunci primer. Dalam contoh ini, medan customer_id dalam jadual pesanan sepadan dengan medan id dalam jadual pelanggan.
2. Jenis persatuan yang berbeza
Selain kaedah hasOne, rangka kerja Yii juga menyediakan beberapa jenis persatuan lain untuk melaksanakan kaedah persatuan data yang berbeza. Berikut adalah jenis yang biasa digunakan:
- Perkaitan satu-ke-banyak (mempunyaiMany)
Perkaitan satu-ke-banyak bermakna satu kelas model dikaitkan dengan berbilang model kelas dari jenis yang sama. Dalam kaedah persatuan, ia boleh ditakrifkan menggunakan kaedah hasMany.
class Order extends ActiveRecord { public function getOrderItems() { return $this->hasMany(OrderItem::className(), ['order_id' => 'id']); } }
Dalam kod di atas, kami menentukan hubungan antara berbilang kelas model OrderItem dalam kelas model Pesanan, yang dilaksanakan melalui kaedah hasMany. Antaranya, parameter pertama menentukan nama kelas model yang berkaitan, dan parameter kedua menentukan hubungan yang sepadan antara kunci asing yang berkaitan dan kunci primer. Dalam contoh ini, medan id dalam jadual pesanan sepadan dengan medan order_id dalam jadual item pesanan.
- Perkaitan satu-ke-banyak dengan berbilang persatuan (mempunyai Banyak melalui)
Perkaitan jenis ini menunjukkan bahawa terdapat jadual perkaitan perantaraan antara dua kelas model, dan setiap Setiap kelas model mempunyai berbilang rekod yang dikaitkan dengan jadual persatuan perantaraan. Dalam kaedah persatuan, ia boleh ditakrifkan menggunakan kaedah hasMany.
class Order extends ActiveRecord { public function getOrderItems() { return $this->hasMany(OrderItem::className(), ['order_id' => 'id']); } public function getProducts() { return $this->hasMany(Product::className(), ['id' => 'product_id']) ->via('orderItems'); } }
Dalam kod di atas, kami menentukan hubungan antara berbilang kelas model Produk dalam kelas model Pesanan, yang dilaksanakan melalui kaedah hasMany. Antaranya, parameter pertama menentukan nama kelas model yang berkaitan, dan parameter kedua menentukan hubungan yang sepadan antara kunci asing yang berkaitan dan kunci primer. Dengan memanggil kaedah melalui('orderItems'), kami menyatakan bahawa jadual perkaitan perantaraan OrderItem perlu digunakan dalam perkaitan, bukannya secara langsung menggunakan perkaitan antara jadual pesanan (Pesanan) dan jadual produk (Produk).
- Persatuan satu dengan satu (hasOne)
Persatuan satu dengan satu menunjukkan bahawa terdapat perkaitan satu-dengan-satu sehala antara dua model kelas. Dalam kaedah persatuan, ia boleh ditakrifkan menggunakan kaedah hasOne.
class Order extends ActiveRecord { public function getCustomer() { return $this->hasOne(Customer::className(), ['id' => 'customer_id']); } }
Dalam kod di atas, kami menentukan hubungan perkaitan antara kelas model Pesanan dan kelas model Pelanggan, yang dilaksanakan melalui kaedah hasOne. Antaranya, parameter pertama menentukan nama kelas model yang berkaitan, dan parameter kedua menentukan hubungan yang sepadan antara kunci asing yang berkaitan dan kunci primer.
- Persatuan banyak-ke-banyak (mempunyaiMany)
Persatuan banyak-ke-banyak menunjukkan bahawa terdapat perkaitan banyak-ke-banyak dwiarah antara dua kelas model. Dalam kaedah persatuan, ia boleh ditakrifkan menggunakan kaedah hasMany.
class Order extends ActiveRecord { public function getProducts() { return $this->hasMany(Product::className(), ['id' => 'product_id']) ->viaTable('order_item', ['order_id' => 'id']); } }
Dalam kod di atas, kami menentukan hubungan antara berbilang kelas model Produk dalam kelas model Pesanan, yang dilaksanakan melalui kaedah hasMany. Antaranya, parameter pertama menentukan nama kelas model yang berkaitan, dan parameter kedua menentukan hubungan yang sepadan antara kunci asing yang berkaitan dan kunci primer. Dengan memanggil kaedah viaTable('order_item', ['order_id' => 'id']), kami menyatakan bahawa jadual perkaitan perantaraan order_item perlu digunakan dalam perkaitan.
3. Data pertanyaan menggunakan perkaitan
Dengan mentakrifkan perkaitan, kami boleh menggunakan kaedah ActiveRecord yang disediakan oleh rangka kerja Yii untuk melengkapkan pertanyaan data yang sepadan. Berikut ialah contoh mudah:
$order = Order::findOne(1); $customer = $order->customer;
Dalam kod di atas, kami mula-mula menggunakan kaedah findOne untuk menanyakan rekod pesanan dengan id 1, dan kemudian mendapatkan maklumat pelanggan yang sepadan dengan pesanan melalui kaedah persatuan.
Selain mengakses secara langsung kaedah yang berkaitan, kami juga boleh menggunakan kaedah dengan untuk pramuat data yang berkaitan, dengan itu mengurangkan keperluan untuk menanya pangkalan data beberapa kali.
$orders = Order::find()->with('customer')->all(); foreach ($orders as $order) { echo $order->customer->name; }
Dalam kod di atas, kami mula-mula menggunakan kaedah cari untuk menanyakan semua rekod pesanan dan pramuat maklumat pelanggan yang dikaitkan dengan pesanan dengan memanggil kaedah with('customer'). Dengan cara ini, dalam gelung foreach berikutnya, setiap kali maklumat pelanggan pesanan itu diakses, ia boleh diperolehi terus daripada memori tanpa menanyakan pangkalan data lagi.
Ringkasan
Artikel ini terutamanya memperkenalkan perhubungan model dalam rangka kerja Yii, termasuk cara mentakrifkan perhubungan, jenis perhubungan yang berbeza dan cara menggunakan perhubungan untuk menanyakan data. Dengan menggunakan perhubungan model secara rasional, kami boleh meningkatkan kecekapan pertanyaan data dan menjadikan kod program lebih ringkas dan boleh dibaca.
Atas ialah kandungan terperinci Perhubungan model dalam rangka kerja Yii: melaksanakan perkaitan data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Memandangkan permintaan untuk aplikasi web terus berkembang, pembangun mempunyai lebih banyak pilihan dalam memilih rangka kerja pembangunan. Symfony dan Yii2 ialah dua rangka kerja PHP yang popular Kedua-duanya mempunyai fungsi dan prestasi yang berkuasa, tetapi apabila berhadapan dengan keperluan untuk membangunkan aplikasi web berskala besar, rangka kerja manakah yang lebih sesuai? Seterusnya kami akan menjalankan analisis perbandingan Symphony dan Yii2 untuk membantu anda membuat pilihan yang lebih baik. Gambaran Keseluruhan Asas Symphony ialah rangka kerja aplikasi web sumber terbuka yang ditulis dalam PHP dan dibina di atas

Dengan perkembangan berterusan teknologi pengkomputeran awan, sandaran data telah menjadi sesuatu yang mesti dilakukan oleh setiap perusahaan. Dalam konteks ini, amat penting untuk membangunkan sistem sandaran awan yang sangat tersedia. Rangka kerja PHP Yii ialah rangka kerja berkuasa yang boleh membantu pembangun membina aplikasi web berprestasi tinggi dengan cepat. Berikut akan memperkenalkan cara menggunakan rangka kerja Yii untuk membangunkan sistem sandaran awan yang sangat tersedia. Mereka bentuk model pangkalan data Dalam rangka kerja Yii, model pangkalan data adalah bahagian yang sangat penting. Kerana sistem sandaran data memerlukan banyak jadual dan hubungan

Rangka kerja Yii ialah rangka kerja aplikasi Web PHP sumber terbuka yang menyediakan pelbagai alatan dan komponen untuk memudahkan proses pembangunan aplikasi Web, yang mana pertanyaan data merupakan salah satu komponen penting. Dalam rangka kerja Yii, kita boleh menggunakan sintaks seperti SQL untuk mengakses pangkalan data untuk membuat pertanyaan dan memanipulasi data dengan cekap. Pembina pertanyaan rangka kerja Yii terutamanya termasuk jenis berikut: pertanyaan ActiveRecord, pertanyaan QueryBuilder, pertanyaan arahan dan pertanyaan SQL asal

Dalam era maklumat semasa, data besar, kecerdasan buatan, pengkomputeran awan dan teknologi lain telah menjadi tumpuan perusahaan utama. Di antara teknologi ini, teknologi pemaparan kad grafik, sebagai teknologi pemprosesan grafik berprestasi tinggi, telah mendapat perhatian yang lebih. Teknologi pemaparan kad grafik digunakan secara meluas dalam pembangunan permainan, filem dan kesan khas televisyen, pemodelan kejuruteraan dan bidang lain. Bagi pembangun, memilih rangka kerja yang sesuai dengan projek mereka adalah keputusan yang sangat penting. Antara bahasa semasa, PHP ialah bahasa yang sangat dinamik Beberapa rangka kerja PHP yang sangat baik seperti Yii2, Ph

Kemahiran pembangunan PHP: Bagaimana untuk melaksanakan fungsi perkaitan jadual data Dalam pembangunan web, perkaitan jadual data adalah teknologi yang sangat penting. Dengan mengaitkan data antara jadual data yang berbeza, pertanyaan data dan fungsi operasi yang lebih kompleks dan fleksibel boleh dicapai. Artikel ini akan memperkenalkan anda kepada cara menggunakan PHP untuk melaksanakan fungsi korelasi jadual data dan memberikan contoh kod khusus. 1. Persediaan Sebelum bermula, kita perlu membuat dua jadual data yang berkaitan. Mengambil dua entiti pelajar dan kursus sebagai contoh, kami mencipta jadual pelajar dan jadual kursus masing-masing. Meja pelajar

Memandangkan Internet terus berkembang, permintaan untuk pembangunan aplikasi web juga semakin tinggi. Bagi pembangun, membangunkan aplikasi memerlukan rangka kerja yang stabil, cekap dan berkuasa, yang boleh meningkatkan kecekapan pembangunan. Yii ialah rangka kerja PHP berprestasi tinggi terkemuka yang menyediakan ciri yang kaya dan prestasi yang baik. Yii3 ialah versi generasi seterusnya bagi rangka kerja Yii, yang seterusnya mengoptimumkan prestasi dan kualiti kod berdasarkan Yii2. Dalam artikel ini, kami akan memperkenalkan cara menggunakan rangka kerja Yii3 untuk membangunkan aplikasi PHP.

Laporkan import dan kemahiran korelasi data untuk carta statistik Vue Pengenalan: Vue, sebagai rangka kerja hadapan yang popular, digunakan secara meluas dalam pelbagai aplikasi web. Dalam aplikasi web, carta statistik adalah salah satu cara yang paling biasa untuk memaparkan data. Artikel ini akan memperkenalkan cara mengimport pustaka carta statistik dalam Vue dan menunjukkan cara untuk mencapai pengemaskinian dinamik carta melalui teknik perkaitan data. 1. Pemilihan dan import perpustakaan laporan Dalam Vue, terdapat banyak perpustakaan carta statistik yang sangat baik untuk dipilih, seperti ECharts dan HighCharts.

Jika anda bertanya "Apakah Yii?", lihat tutorial saya sebelum ini: Pengenalan kepada Rangka Kerja Yii, yang menyemak faedah Yii dan menggariskan perkara baharu dalam Yii 2.0, yang dikeluarkan pada Oktober 2014. Hmm> Dalam siri Pengaturcaraan dengan Yii2 ini, saya akan membimbing pembaca menggunakan rangka kerja Yii2PHP. Dalam tutorial hari ini, saya akan berkongsi dengan anda cara memanfaatkan fungsi konsol Yii untuk menjalankan kerja cron. Pada masa lalu, saya telah menggunakan wget - URL yang boleh diakses web - dalam tugas cron untuk menjalankan tugas latar belakang saya. Ini menimbulkan kebimbangan keselamatan dan mempunyai beberapa masalah prestasi. Semasa saya membincangkan beberapa cara untuk mengurangkan risiko dalam siri Keselamatan untuk Permulaan kami, saya berharap untuk beralih kepada arahan yang dipacu konsol
