Apabila membangun dengan thinkphp, anda sering menghadapi situasi di mana anda perlu menggunakan pertanyaan berkaitan. Apabila melakukan pertanyaan berkaitan, syarat adalah perkara yang sering kita perlu beri perhatian.
Artikel ini akan memperkenalkan cara menggunakan syarat untuk menapis apabila melakukan pertanyaan berkaitan dalam thinkphp.
- Tentukan perkaitan dalam model
Apabila melakukan pertanyaan berkaitan, anda perlu mentakrifkan perkaitan dalam model terlebih dahulu. Di sini kita mengambil perhubungan satu dengan satu sebagai contoh. Mula-mula, tentukan model Pengguna, yang mengandungi perkaitan hasOne:
class User extends Model { protected $table = 'users'; public function profile() { return $this->hasOne('Profile'); } }
Dalam kod di atas, kami mentakrifkan profil bernama persatuan hasOne, yang dikaitkan dengan model bernama Profil . Dalam model Profil, anda perlu mentakrifkan perkaitan belongsTo:
class Profile extends Model { protected $table = 'profiles'; public function user() { return $this->belongsTo('User'); } }
Dalam kod di atas, kami mentakrifkan perkaitan belongsTo bernama pengguna, yang dikaitkan dengan model bernama Pengguna.
- Lakukan pertanyaan berkaitan
Selepas menentukan perhubungan perkaitan, kami boleh melakukan pertanyaan berkaitan dalam pengawal. Pernyataan pertanyaan adalah seperti berikut:
$users = User::with(['profile' => function($query){ $query->where('age', '>=', 18); }])->select();
Dalam kod di atas, kami menggunakan kaedah dengan untuk melaksanakan pertanyaan berkaitan. Antaranya, parameter pertama melepasi perkaitan yang ingin kami tanyakan, dan parameter kedua ialah fungsi panggil balik yang digunakan untuk mengenakan beberapa syarat tambahan pada pertanyaan ini.
Dalam kod di atas, kami menggunakan kaedah where untuk menapis atribut umur model profil dan hanya rekod pertanyaan yang umurnya lebih besar daripada atau sama dengan 18 tahun.
- Syarat operasi berantai
Selain menghantar fungsi panggil balik dalam kaedah dengan untuk mengehadkan syarat pertanyaan, anda juga boleh melaksanakan keadaan operasi berantai semasa melakukan pertanyaan berkaitan. . Sebagai contoh, kod berikut melaksanakan pertanyaan untuk pengguna yang umurnya lebih daripada atau sama dengan 18 dalam jadual pengguna dan untuk rekod yang alamatnya tidak kosong dalam rekod profil mereka:
$users = User::where('age', '>=', 18) ->with(['profile' => function($query){ $query->where('address', '', ''); }]) ->select();
Dalam perkara di atas kod, kami mula-mula lulus Kaedah where menyekat syarat pertanyaan model Pengguna. Kemudian, kami menggunakan fungsi panggil balik dalam kaedah dengan untuk menyekat syarat pertanyaan model profil.
- Ringkasan
Apabila melakukan pertanyaan berkaitan dalam thinkphp, kita boleh menggunakan kaedah with untuk melaksanakan pertanyaan berkaitan, dan menghantar fungsi panggil balik atau syarat operasi rantai kepada hasil Pertanyaan boleh selanjutnya dihadkan dan ditapis.
Sudah tentu, apabila melakukan pertanyaan berkaitan, kami juga perlu memberi perhatian kepada beberapa butiran lain, seperti takrifan perhubungan persatuan, penulisan pernyataan pertanyaan, dsb. Dalam proses pembangunan sebenar, kita perlu melakukan operasi yang fleksibel mengikut keadaan tertentu.
Atas ialah kandungan terperinci Cara menggunakan syarat untuk menapis pertanyaan berkaitan thinkphp. 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

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
