Yii - Pembuat Kueri
Pembuat kueri memungkinkan Anda membuat kueri SQL dengan cara terprogram. Pembuat kueri membantu Anda menulis kode terkait SQL yang lebih mudah dibaca.
Untuk menggunakan pembuat kueri, Anda harus mengikuti langkah-langkah ini -
- Buat objek yii \ db \ Query.
- Jalankan metode kueri.
Untuk membangun sebuah yii\db\Query objek, Anda harus memanggil fungsi pembuat kueri yang berbeda untuk menentukan bagian yang berbeda dari kueri SQL.
Step 1 - Untuk menunjukkan penggunaan umum dari pembuat kueri, ubah actionTestDb metode seperti ini.
public function actionTestDb() {
//generates "SELECT id, name, email FROM user WHERE name = 'User10';"
$user = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where(['name' => 'User10']) ->one(); var_dump($user);
}
Step 2 - Pergi ke http://localhost:8080/index.php?r=site/test-db, Anda akan melihat output berikut.
Dimana () berfungsi
Itu where()fungsi mendefinisikan fragmen WHERE dari sebuah kueri. Untuk menentukan aWHERE syaratnya, Anda dapat menggunakan tiga format.
string format - 'name = User10'
hash format - ['nama' => 'Pengguna10', 'email => [email protected]']
operator format - ['like', 'name', 'User']
Contoh format String
public function actionTestDb() {
$user = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where('name = :name', [':name' => 'User11']) ->one(); var_dump($user);
}
Berikut akan menjadi keluarannya.
Contoh format Hash
public function actionTestDb() {
$user = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where([ 'name' => 'User5', 'email' => '[email protected]' ]) ->one(); var_dump($user);
}
Berikut akan menjadi keluarannya.
Format operator memungkinkan Anda untuk menentukan kondisi arbitrer dalam format berikut -
[operator, operand1, operand2]
Operatornya bisa -
and - ['and', 'id = 1', 'id = 2'] akan menghasilkan id = 1 AND id = 2 atau: mirip dengan operator and
between - ['between', 'id', 1, 15] akan menghasilkan id ANTARA 1 DAN 15
not between - mirip dengan operator antara, tetapi ANTARA diganti dengan TIDAK ANTARA
in - ['in', 'id', [5,10,15]] akan menghasilkan id IN (5,10,15)
not in - mirip dengan operator in, tetapi IN diganti dengan NOT IN
like - ['like', 'name', 'user'] akan menghasilkan nama LIKE '% user%'
or like - mirip dengan operator like, tetapi OR digunakan untuk membagi predikat LIKE
not like - mirip dengan operator like, tetapi LIKE diganti dengan NOT LIKE
or not like - mirip dengan operator not like, tetapi OR digunakan untuk menggabungkan predikat NOT LIKE
exists - membutuhkan satu operan yang harus merupakan turunan dari kelas yii \ db \ Query
not exists - mirip dengan operator existing, tetapi membangun ekspresi NOT EXISTS (subquery)
<, <=, >, >=, atau operator DB lainnya: ['<', 'id', 10] akan menghasilkan id <10
Contoh format Operator
public function actionTestDb() {
$users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where(['between', 'id', 5, 7]) ->all(); var_dump($users);
}
Berikut akan menjadi keluarannya.
Fungsi OrderBy ()
Itu orderBy() fungsi mendefinisikan fragmen ORDER BY.
Example -
public function actionTestDb() {
$users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->orderBy('name DESC') ->all(); var_dump($users);
}
Berikut akan menjadi keluarannya.
groupBy () Fungsi
Itu groupBy() fungsi mendefinisikan fragmen GROUP BY, sedangkan having() metode menentukan fragmen HAVING.
Example -
public function actionTestDb() {
$users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->groupBy('name') ->having('id < 5') ->all(); var_dump($users);
}
Berikut akan menjadi keluarannya.
Itu limit() dan offset() metode mendefinisikan LIMIT dan OFFSET fragmen.
Example -
public function actionTestDb() {
$users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->limit(5) ->offset(5) ->all(); var_dump($users);
}
Anda dapat melihat output berikut -
Itu yii\db\Query kelas menyediakan satu set metode untuk tujuan yang berbeda -
all() - Mengembalikan larik baris pasangan nama-nilai.
one() - Mengembalikan baris pertama.
column() - Mengembalikan kolom pertama.
scalar() - Mengembalikan nilai skalar dari baris pertama dan kolom pertama hasil.
exists() - Mengembalikan nilai yang menunjukkan apakah kueri berisi hasil apa pun
count() Menampilkan hasil dari COUNT kueri
other aggregation query methods - Termasuk jumlah ($q), average($q), maks ($q), min($q). Parameter $ q dapat berupa nama kolom atau ekspresi DB.