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); }
string 格式 ? 'name = User10'
hash 格式 ? ['name' => 'User10', 'email => [email protected]']
operator 格式 ? ['like', 'name', 'User']
public function actionTestDb() { $user = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where('name = :name', [':name' => 'User11']) ->one(); var_dump($user); }
public function actionTestDb() { $user = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where([ 'name' => 'User5', 'email' => '[email protected]' ]) ->one(); var_dump($user); }
輸出結果如下圖所示:
[operator, operand1, operand2]
and ? ['and', 'id = 1', 'id = 2'] 會產生類似: id = 1 AND id = 2
between ? ['between', 'id', 1, 15] 會產生類似:id BETWEEN 1 AND 15
not between ? 類似 between 操作符, 但是 BETWEEN 被替換為 NOT BETWEEN
in ? ['in', 'id', [5,10,15]] 會產生類似: IN (5,10,15)
not in ? 類似 in 操作符,但是 IN 被替換為 NOT IN
like ? ['like', 'name', 'user'] 會產生類似: name LIKE '%user%'
or like ? 類似 like 操作符, 但是 OR 用來分割 LIKE 謂詞
not like ? 類似於 like 操作符, 但是 LIKE 被 NOT LIKE 替代;
or not like ? 類似 not like 運算子,但或用來連線 NOT LIKE 謂詞
exists ? 要求一個運算元必須是 yii\db\Query 類的一個範例
not exists ? 類似 exists 操作符,但是構建了一個NOT EXISTS(子查詢)的表示式
<, <=, >, >=, 或任何其他資料庫操作符: ['<', 'id', 10] 會產生類似: id<10
public function actionTestDb() { $users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where(['between', 'id', 5, 7]) ->all(); var_dump($users); }
輸出結果如下圖所示:
如下範例 ?
public function actionTestDb() { $users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->orderBy('name DESC') ->all(); var_dump($users); }
輸出結果如下圖所示:
如下範例 ?
public function actionTestDb() { $users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->groupBy('name') ->having('id < 5') ->all(); var_dump($users); }
輸出結果如下圖所示:
如下範例 ?
public function actionTestDb() { $users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->limit(5) ->offset(5) ->all(); var_dump($users); }
輸出結果如下圖所示:
all() ? 返回一行為名稱-值對的陣列。
one() ? 返回第一行
column() ? 返回第一列
scalar() ? 返回結果的第一行和第一列的標量值。
exists() ? 返回指示查詢是否包含任何結果值
count() 返回COUNT查詢結果