【问题标题】:Creating or updating multiple mysql lines using Yii model使用 Yii 模型创建或更新多个 mysql 行
【发布时间】:2012-06-09 05:24:38
【问题描述】:

我最近开始使用 Yii,所以请原谅我的无知 :)

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

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

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

问题是即使我使用新记录设置模型,它也有以前 PK 的记录(因为它是相同的模型)。

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

一如既往的感谢, 丹尼

【问题讨论】:

    标签: php mysql frameworks yii


    【解决方案1】:

    试试这个..

     $queryResults = $command->queryAll();
    
             foreach ($queryResults as $CActive) {
    
                $model=new Campaigns;  
    
                $model->attributes=$CActive;
    
                if($model->save($CActive)) {
        echo "Good!";
    }
    

    你必须为每一行创建实例......它的 Yii 核心要求...... }

    【讨论】:

    • 这是他本来就有的。
    • 您的答案与 Örs 完全一样,因此您要么添加一些有价值的信息(可能是另一种方法),要么删除此答案。
    【解决方案2】:

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

    $queryResults = $command->queryAll();
    
    foreach ($queryResults as $CActive) {
        $model=new Campaigns;  
        $model->attributes=$CActive;
    
        if($model->save($CActive))  echo "Good!";
    }
    

    【讨论】:

    • 谢谢!!这就是我的想法……这不是非常消耗资源吗?
    • 实例创建不是,但插入肯定会造成损失。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    相关资源
    最近更新 更多