Rumah > rangka kerja php > YII > teks badan

DbCriteria dalam rangka kerja Yii: Tanya pangkalan data dengan cekap

WBOY
Lepaskan: 2023-06-21 12:02:37
asal
977 orang telah melayarinya

DbCriteria dalam rangka kerja Yii: Tanya pangkalan data dengan cekap

Rangka kerja Yii ialah rangka kerja PHP yang pantas, cekap dan selamat Ia menyediakan kelas operasi pangkalan data DbCriteria yang boleh membantu kami membuat pertanyaan dengan lebih cekap dan menambah baik prestasi aplikasi. Artikel ini akan memperkenalkan cara menggunakan DbCriteria untuk pertanyaan pangkalan data.

Penciptaan DbCriteria

Kami boleh menggunakan kod berikut untuk mencipta contoh DbCriteria:

$criteria = new CDbCriteria;
Salin selepas log masuk

DbCriteria menyediakan kaedah pertanyaan penstriman, yang membolehkan kami lulus pertanyaan Set rantai syarat dengan memanggil kaedah, contohnya:

$criteria->select('title, content')
         ->addCondition('status=:status')
         ->params(array(':status'=>1))
         ->order('create_time DESC')
         ->limit(10);
Salin selepas log masuk

Dalam kod di atas, kami menggunakan kaedah pilih untuk menentukan medan untuk ditanya, gunakan kaedah addCondition untuk menetapkan syarat pertanyaan, gunakan kaedah params untuk mengikat pertanyaan parameter, dan gunakan Kaedah pesanan mengisih hasil pertanyaan, dan kaedah had menetapkan bilangan hasil pertanyaan.

DbCriteria menyediakan pelbagai kaedah pertanyaan, termasuk kaedah pilih, tambahSyarat, param, pesanan, had dan kaedah lain. Di bawah ini kami akan memperkenalkan kaedah ini satu demi satu.

kaedah pilih

kaedah pilih digunakan untuk menentukan medan yang hendak ditanya Ia boleh menerima satu atau lebih nama medan sebagai parameter, contohnya:

$criteria->select('id, name, email');
Salin selepas log masuk

juga boleh. tatasusunan. Tentukan medan yang ingin ditanya dalam bentuk:

$criteria->select(array('id', 'name', 'email'));
Salin selepas log masuk

kaedah addCondition

kaedah addCondition digunakan untuk menambah syarat pertanyaan Ia boleh menerima parameter berbeza berikut:

  • Rentetan, mewakili keadaan pertanyaan, contohnya: "umur>18";
  • Tatasusunan, mewakili keadaan pertanyaan, contohnya: tatasusunan('umur>:umur', tatasusunan( ':age'=>18) );

Contohnya:

$criteria->addCondition('age>:age');
$criteria->addCondition('gender=:gender');
$criteria->params(array(':age'=>18, ':gender'=>'Female'));
Salin selepas log masuk

Dalam kod di atas, kami menggunakan kaedah addCondition untuk menambah dua syarat pertanyaan dan menggunakan params kaedah untuk mengikat parameter pertanyaan.

kaedah params

kaedah params digunakan untuk mengikat parameter pertanyaan Ia menerima tatasusunan sebagai parameter nilai yang perlu diikat. Contohnya:

$criteria->params(array(':age'=>18, ':gender'=>'Female'));
Salin selepas log masuk

Dalam kod di atas, kami menggunakan kaedah params untuk mengikat dua parameter pertanyaan: :umur dan :jantina.

kaedah pesanan

kaedah pesanan digunakan untuk mengisih hasil pertanyaan Ia menerima rentetan sebagai parameter, yang menunjukkan syarat untuk mengisih, contohnya:

$criteria->order('create_time DESC');
Salin selepas log masuk

Dalam perkara di atas. kod, Kami menggunakan kaedah pesanan untuk mengisih hasil pertanyaan dalam susunan menurun mengikut medan create_time.

kaedah had

kaedah had digunakan untuk mengehadkan bilangan hasil pertanyaan Ia menerima integer sebagai parameter, menunjukkan bilangan hasil pertanyaan, contohnya:

$criteria->limit(10);
Salin selepas log masuk
<🎜. >Dalam kod di atas, Kami menggunakan kaedah had untuk mengehadkan bilangan hasil pertanyaan kepada 10 rekod.

Penggunaan DbCriteria

Selepas kami mencipta contoh DbCriteria, kami boleh menggunakannya pada pertanyaan dalam dua cara berikut:

    Gunakan kaedah cari Pertanyaan a rekod tunggal
  1. $model = Post::model()->find($criteria);
    Salin selepas log masuk
Dalam kod di atas, kami memanggil kaedah cari kelas model Post dan lulus contoh DbCriteria sebagai parameter kepada kaedah untuk menanyakan satu rekod.

    Gunakan kaedah findAll untuk menanyakan berbilang rekod
  1. $models = Post::model()->findAll($criteria);
    Salin selepas log masuk
Dalam kod di atas, kami memanggil kaedah findAll kelas model Post dan lulus contoh DbCriteria sebagai parameter kepada kaedah untuk menanyakan berbilang rekod.

Nota: Kami juga boleh menggunakan kaedah pertanyaan untuk membuat pertanyaan menggunakan DbCriteria. Contohnya:

$models = Yii::app()->db->createCommand()
    ->select('id, name, email')
    ->from('user')
    ->where('status=:status', array(':status'=>1))
    ->order('create_time DESC')
    ->limit(10)
    ->queryAll();
Salin selepas log masuk
Dalam kod di atas, kami memperoleh objek sambungan pangkalan data melalui Yii::app()->db, gunakan kaedah createCommand untuk mencipta objek arahan, dan kemudian gunakan pilih, daripada, di mana, perintah, had dan kaedah lain untuk menetapkan syarat pertanyaan, dan akhirnya memanggil kaedah queryAll untuk membuat pertanyaan.

Ringkasan

DbCriteria ialah alat pertanyaan pangkalan data yang sangat berkuasa dalam rangka kerja Yii Ia menyediakan satu siri kaedah yang mudah digunakan untuk menetapkan syarat pertanyaan, mengikat parameter pertanyaan, menyusun hasil pertanyaan. dan hadkan Bilangan pertanyaan, dsb., membantu kami menanyakan pangkalan data dengan lebih cekap dan meningkatkan prestasi aplikasi. Kita harus menggunakan sepenuhnya DbCriteria untuk mengoptimumkan kod kita apabila membuat pertanyaan pangkalan data.

Atas ialah kandungan terperinci DbCriteria dalam rangka kerja Yii: Tanya pangkalan data dengan cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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