如何在模型yii2框架中使用自定义查询

时间:2015-12-16 11:41:24

标签: yii2

如何在使用yii2框架的模型中使用自定义查询?我正在尝试,但错误发生。

我是Yii2 Framework的初学者。

这是我的登录模式:

public function getUser($id)
{
    $return = User::findBySQL("Select * from User where userType = 'AHP' and userid = '$id';");
    return($return['AHPName']);
}

4 个答案:

答案 0 :(得分:3)

尝试ActiveQuery

public function getUser($id)
{
  $data = User::find()->where(['userType' => 'AHP', 'userid' => $id])->one();
  return $data['AHPName'];
}

答案 1 :(得分:3)

<强> findOne()

  

通过主键或a返回单个活动记录模型实例   列值数组。

$data = User::findOne(['userType' => 'AHP', 'userid' => $id]);

这将找到user type is AHP及其userid is $id的用户。

public function getUser($id)
{
  $data = User::findOne(['userType' => 'AHP', 'userid' => $id]);
  return $data['AHPName'];
}

答案 2 :(得分:1)

使用自定义查询:

public function getUser($id)
{

     $sql = "Select * from User where userType = 'AHP' and userid = '.$id.'";

     $return = User::findBySQL($sql)->one();

     return $return->AHPName;
}

答案 3 :(得分:0)

您可以尝试使用此技术在yii2中编写自定义查询

  <?php
    use yii\db\Query;

    $query  = new Query(); 
    $query->select(['*'])->from('user')
                          ->where('user.userType=:id',['id'=>'AHP'])
                          ->andWhere('user.userid=:no',['no'=>$id]);


     $command   = $query->createCommand();
     $result    = $command->queryAll(); 
    ?>

另一个要做到这一点

User::find()->where('userType = :type and userid = :id', 
            ['type'=>AHP, 'id' => $id])->one();