where('name','like&#"/> where('name','like&#">

Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk melaksanakan pertanyaan kabur dalam thinkphp

Bagaimana untuk melaksanakan pertanyaan kabur dalam thinkphp

WBOY
WBOYke hadapan
2023-05-27 17:10:511700semak imbas

Pertama sekali, dalam ThinkPHP, kita boleh mengendalikan pangkalan data melalui kelas Db. Kita boleh menggunakan kaedah jadual kelas Db untuk menentukan jadual data yang hendak dikendalikan, dan kemudian memanggil kaedah pertanyaan yang sepadan untuk beroperasi. Apabila melakukan pertanyaan kabur, kita boleh menggunakan kaedah seperti itu. Nama medan yang memerlukan padanan kabur digunakan sebagai parameter pertama kaedah ini, dan rentetan yang perlu dipadankan digunakan sebagai parameter kedua. Sebagai contoh, jika kita ingin menanyakan semua pengguna yang namanya mengandungi "Zhang", kita boleh menulis kod seperti ini:

Db::table('user')->where('name', 'like', '%张%')->select();

Dalam penyataan ini, parameter pertama kaedah where ialah syarat yang hendak disoal, di mana 'nama' ialah data Nama medan dalam jadual, parameter kedua 'suka' menunjukkan bahawa kita ingin melakukan padanan kabur, dan parameter ketiga '%张%' ialah rentetan yang perlu dipadankan. Menggunakan % aksara kad bebas, anda boleh memadankan rentetan yang mengandungi sebarang bilangan aksara, supaya anda boleh mencari semua pengguna yang nama penggunanya mengandungi "张".

Selain menggunakan kaedah pertanyaan yang disediakan oleh kelas Db, ThinkPHP juga menyediakan beberapa kaedah pertanyaan yang lebih maju, seperti pertanyaan model dan pertanyaan berkaitan, dsb. Mentakrifkan kelas model memudahkan pertanyaan kerana pertanyaan model dilaksanakan menggunakan kelas model yang ditentukan. Sebagai contoh, kita boleh mentakrifkan kaedah searchByName dalam model Pengguna untuk menanyakan semua pengguna yang namanya mengandungi rentetan yang ditentukan:

class User extends Model
{
    public function searchByName($keyword)
    {
        return $this->where('name', 'like', '%' . $keyword . '%')->select();
    }
}

Dalam kaedah ini, $this mewakili objek model Pengguna semasa dan kaedah where adalah Sama seperti yang diterangkan di atas, kecuali kelas Db digantikan dengan $this. Kami boleh merangkum kaedah pertanyaan ini supaya ia boleh digunakan semula di mana-mana dalam aplikasi

class User extends Model
{
    public static function searchByName($keyword)
    {
        return self::where('name', 'like', '%' . $keyword . '%')->select();
    }
}

Di sini kami menukar kaedah searchByName kepada kaedah statik dan menggantikan $this dengan diri sendiri, supaya ia boleh digunakan di mana-mana dalam aplikasi . Kaedah User::searchByName() dipanggil terus untuk pertanyaan.

Pertanyaan bersekutu ialah kaedah pertanyaan dengan menyambungkan berbilang jadual data berkaitan menggunakan pernyataan JOIN. Pertanyaan yang berkaitan dalam ThinkPHP dilaksanakan dengan mentakrifkan perkaitan model Kaedah pelaksanaan khusus adalah di luar skop artikel ini, bagaimanapun, perlu diambil perhatian bahawa apabila melakukan pertanyaan kabur, pernyataan JOIN akan mengurangkan kecekapan pertanyaan pertimbangkan untuk melakukan pertanyaan kabur dahulu, dan kemudian melaksanakan pertanyaan berkaitan, atau gunakan caching dan kaedah lain untuk meningkatkan kelajuan pertanyaan.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pertanyaan kabur dalam thinkphp. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam