【问题标题】:saving the model in a loop yii将模型保存在循环中
【发布时间】:2012-12-05 12:14:22
【问题描述】:

我需要多次保存字段值,用逗号分隔它们。我正在获取值,但我需要将模型中的每个值存储在一个循环中。

$subModel->name = $_POST['Model']['keywords'];
$keyword = explode(",", $subModel->name);    
for ($i=0; $i<=sizeof($keyword)-1; $i++)
{
    //echo $keyword[$i]."<br/>";
    $subModel->name = $keyword[$i];
    $subModel->save();
}

它只存储最后一个值,任何人都可以告诉我如何在一个循环中将每个值一次存储到我的模型中。

谢谢

【问题讨论】:

    标签: arrays yii models saving-data


    【解决方案1】:

    您需要在每次迭代中设置 $subModel-&gt;isNewRecord = true 并取消设置(或手动设置为您选择的值)模型的 id 字段。它看起来像这样:

    for ($i=0; $i<=sizeof($keyword)-1; $i++)
    {
        // if $subModel->name is not the primary key for that model, unset the PK here:
        // $subModel->id = null
        $subModel->name = $keyword[$i];
        $subModel->isNewRecord = true;
        $subModel->save();
    }
    

    【讨论】:

    • 感谢您的回复..id 是这里的主键。我得到这个错误....CDbCommand 未能执行 SQL 语句:SQLSTATE [23000]:完整性约束违规:1062 键 'PRIMARY' 的重复条目 '1'。执行的 SQL 语句为:INSERT INTO subModel (name, id) VALUES (:yp0, :yp1)
    • @Developer:那是因为您没有将id 设置为null。您是否阅读了注释掉的行?
    • 我还需要存储名称的唯一值..你能告诉我如何检查并保存
    • @Developer:抱歉,我无法为您编写代码。有许多在线资源解释了 Yii 中的验证是如何工作的。
    • @mehdinejati:否则循环会尝试使用现有的 PK 插入,并且会因为重复而失败。
    猜你喜欢
    • 2019-08-09
    • 2021-09-30
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2014-06-21
    相关资源
    最近更新 更多