yii2中如何写sql查询

How to write sql query in yii2

我有一个原始的 sql 查询,我 运行 使用 yii2 Yii::$app->db->createCommand() 但后来我想知道我如何使用 yii 的编写查询的方法来实现同样的事情。

 $m = "SELECT p.basic_plan_amt AS basic,p.premium_plan_amt AS premium,p.daju_plan_amt AS daju,c.name 
 AS country FROM price p LEFT JOIN country c ON p.country_id = c.id WHERE p.country_id = " .$country_id; 

虽然上面的查询运行良好并提供了预期的结果,但是我如何使用以下格式编写相同的查询

$model = \backend\models\Price::find()->select([p.basic_plan_amt AS basic,p.premium_plan_amt AS 
premium,p.daju_plan_amt AS daju,c.name 
AS country])->where(['country_id' => $country_id])->all();

下面是yii查询的例子希望对你有帮助More reference

关系模型

$model = User::find()
        ->with('comments')
        ->all();
foreach ($model as $user) {
    // get data from relation model
    $comments = $user->comments;
        ......
    foreach($comments as $comment){
        ........
    }
}

joinWith() 示例 1:

$model = User::find()
        ->joinWith('comments')
        ->all();

示例 2:

$model = User::find()
        ->joinWith('comments')
        ->orderBy('tbl_comments_id.id, tbl_user.id')
        ->all();

innerJoinWith()

$model = User::find()
        ->innerJoinWith('comments', false)
        ->all();
// equivalent to the above
$model = User::find()
        ->joinWith('comments', false, 'INNER JOIN')
        ->all();

加入()

JOIN_TYPE = INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN etc
Syntax


$query = new Query;
$query  ->select(['SELECT COLUMNS'])  
        ->from('TABLE_NAME_1')
        ->join( 'JOIN_TYPE', 
            'TABLE_NAME_2',
            'TABLE_NAME_2.COLUMN =TABLE_NAME_1.COLUMN'
        ); 
$command = $query->createCommand();
$data = $command->queryAll();

示例 1:

$query = new Query;
$query  ->select([
        'tbl_user.username AS name', 
        'tbl_category.categoryname as  Category',
        'tbl_document.documentname']
        )  
        ->from('tbl_user')
        ->join('LEFT OUTER JOIN', 'tbl_category',
            'tbl_category.createdby =tbl_user.userid')      
        ->join('LEFT OUTER JOIN', 'tbl_document', 
            'tbl_category.cid =tbl_document.did')
        ->LIMIT(5)  ; 

$command = $query->createCommand();
$data = $command->queryAll();

输出查询

SELECT `tbl_user`.`username` AS `name`, `tbl_category`.`categoryname` AS `Category` 
FROM `tbl_user` 
LEFT OUTER JOIN `tbl_category` ON tbl_category.createdby =tbl_user.userid 
LEFT OUTER JOIN `tbl_document` ON tbl_category.cid =tbl_document.did 
LIMIT 5

左连接() 示例 1:

$query = new Query;
$query  ->select(['tbl_user.username AS name', 'tbl_category.type as Category'])  
        ->from('tbl_user')
        ->leftJoin('tbl_category', 'tbl_category.createdby = tbl_user.userid')
        ->limit(2); 

$command = $query->createCommand();
$data = $command->queryAll();

输出查询

SELECT `tbl_user`.`username` AS `name`, `tbl_category`.`type` AS `Category`
FROM `tbl_user` 
LEFT JOIN `tbl_category` ON tbl_category.createdby = tbl_user.useridd 
LIMIT 2     

使用 createcommand() 方法:

使用yii\db\Query; $connection = \Yii::$app->db; $查询=新查询; $insql = $connection->createCommand("SELECT* FROM inventory ); $$result=$insql->queryAll();

上述方法列出了清单中的所有数据table。