在Yii中确认SQLbuilder查询成功

时间:2013-08-02 15:01:42

标签: yii query-builder

首先,如果这是一个非常愚蠢的问题,我道歉。

我有一个关于在Yii中正确处理SQL语句的问题。我将制作一个小例子代码。

    public function actionCreate($id) {


    $cmd = Yii::app()->db->createCommand();
    $cmd->insert('table_1',array(
    'user_id'=> (int) $id,
    ),'id=:id', array(':id'=>$id)); 
}

确认此查询的正确方法是什么?是try / catch块吗?

我问的原因是如果它传递了一个错误的参数可能会失败,但是在几个表上我有DB约束也可能导致失败,所以我想尝试确保我正确处理所有事情而不是毯子处理它们。

1 个答案:

答案 0 :(得分:1)

来自官方文件

  
      
  1. 执行SQL语句建立数据库连接后,可以使用CDbCommand执行SQL语句。一   通过调用创建CDbCommand实例   带有指定SQL语句的CDbConnection :: createCommand():
  2.   
$connection=Yii::app()->db;   // assuming you have configured a "db" connection
// If not, you may explicitly create a connection:
// $connection=new CDbConnection($dsn,$username,$password);
$command=$connection->createCommand($sql);
// if needed, the SQL statement may be updated as follows:
// $command->text=$newSQL;
  

SQL语句通过CDbCommand以下列两种方式之一执行:

这就是

  

execute():执行非查询SQL语句,例如INSERT,UPDATE   和DELETE。如果成功,则返回行数   受执行影响。

顺便说一句,insert()是一种低级方法,由Active Record(AR)内部使用。为什么不简单地使用AR

通过Yii gii,您可以自动获取table_1的模型,您可以从中找到,插入,更新,删除。例如:

$model = new Table1ModelName;
$model->user_id= $id;
$model->name= $user_name;
...
$model->save();

您还有许多想要研究的变通方法和有趣的事情 Yii Working Active Record