Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在yii2中编写sql查询_Php_Yii2 - Fatal编程技术网

Php 如何在yii2中编写sql查询

Php 如何在yii2中编写sql查询,php,yii2,Php,Yii2,我有一个原始的sql查询,我使用yii2Yii::$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.i

我有一个原始的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中的查询示例,希望对您有所帮助

关系模型

$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();
$model = User::find()
        ->joinWith('comments')
        ->orderBy('tbl_comments_id.id, tbl_user.id')
        ->all();
$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();
$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();
示例2:

$model = User::find()
        ->joinWith('comments')
        ->all();
$model = User::find()
        ->joinWith('comments')
        ->orderBy('tbl_comments_id.id, tbl_user.id')
        ->all();
$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();
$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();
innerJoinWith()

Join()

示例1:

$model = User::find()
        ->joinWith('comments')
        ->all();
$model = User::find()
        ->joinWith('comments')
        ->orderBy('tbl_comments_id.id, tbl_user.id')
        ->all();
$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();
$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`.`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
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     
leftJoin() 示例1:

$model = User::find()
        ->joinWith('comments')
        ->all();
$model = User::find()
        ->joinWith('comments')
        ->orderBy('tbl_comments_id.id, tbl_user.id')
        ->all();
$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();
$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`.`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
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$连接=\Yii::$app->db$查询=新查询$insql=$connection->createCommand(“从清单中选择*);$$result=$insql->queryAll()


上面的方法列出了清单表中的所有数据。

您的问题是“是否可以使用方法创建sql请求?”" ? 如果是这样的话,你是否检查过yii文档:@Lucas Gras我知道这是可能的,但我不知道如何实现这一点,这是我的问题,需要有人帮我接通。谢谢你的意思是如何在ActiveRecord中编写
join()
?@是的,如何在表和列上使用别名,以及如何编写join语句