Php 使用Yii模型创建或更新多个mysql行

Php 使用Yii模型创建或更新多个mysql行,php,mysql,frameworks,yii,Php,Mysql,Frameworks,Yii,我最近开始与Yii合作,所以请原谅我的无知:) 我有一个返回多行(数组数组)的SQL查询,然后我想将这些行插入数据库: $queryResults = $command->queryAll(); $model=new Campaigns(); foreach ($queryResults as $CActive) { $model->setIsNewRecord(true); $model->attributes=$CActive; if($model->

我最近开始与Yii合作,所以请原谅我的无知:)

我有一个返回多行(数组数组)的SQL查询,然后我想将这些行插入数据库:

$queryResults = $command->queryAll();
$model=new Campaigns();
foreach ($queryResults as $CActive) {
    $model->setIsNewRecord(true);
    $model->attributes=$CActive;

if($model->save($CActive)) {
    echo "Good!";
}
问题是,即使我用新记录设置模型,它也有上一次PK的记录(因为它是同一个模型)

我是否需要为每行创建一个新模型?(似乎不太可能…)

谢谢你一如既往,
Danny

您必须在每次插入时创建一个新实例,如下图所示,否则您只是一次又一次地更新一个模型

$queryResults = $command->queryAll();

foreach ($queryResults as $CActive) {
    $model=new Campaigns;  
    $model->attributes=$CActive;

    if($model->save($CActive))  echo "Good!";
}

您必须在每次插入时创建一个新实例,就像这样,否则您只是在一次又一次地更新一个模型

$queryResults = $command->queryAll();

foreach ($queryResults as $CActive) {
    $model=new Campaigns;  
    $model->attributes=$CActive;

    if($model->save($CActive))  echo "Good!";
}
试试这个

 $queryResults = $command->queryAll();

         foreach ($queryResults as $CActive) {

            $model=new Campaigns;  

            $model->attributes=$CActive;

            if($model->save($CActive)) {
    echo "Good!";
}
您必须为每一行创建实例,这是Yii的核心要求。。 }试试这个

 $queryResults = $command->queryAll();

         foreach ($queryResults as $CActive) {

            $model=new Campaigns;  

            $model->attributes=$CActive;

            if($model->save($CActive)) {
    echo "Good!";
}
您必须为每一行创建实例,这是Yii的核心要求。。
}

这是他最初拥有的。你的答案与Örs'完全相同,因此你要么添加一些有价值的信息(可能是另一种方法),要么删除这个答案。这是他最初拥有的。你的答案与Örs'完全相同,所以要么添加一些有价值的信息(可能是另一种方法),要么删除这个答案。谢谢!!我就是这么想的。。。这不是很消耗资源吗?创建实例不是,但是插入肯定会付出代价。谢谢!!我就是这么想的。。。这不是很消耗资源吗?创建实例不是,但是插入肯定会付出代价。