0

我有 2 个模型(producten 和 voorraad)和一个控制器(producten)。所以我在producten C R U D(创建/更新)中构建了一个表单。这是一个自定义表单:

<div class="form-group">
    <span class='btn btn-default addOption'>Optie toevoegen</span>
</div>
<div class='opties'>    

</div>
<div class="form-group">
    Verkrijgbaar als backorder?
    <select name="backorder">
        <option value="1">Ja</option>
        <option value="0">Nee</option>
    </select>
</div>

这很容易。如果您按下按钮addOption,它将添加一些表单输入。

现在当表单被保存时(这里麻烦开始了),它总是表单中的数据添加到数据库中。但我不想要那个。我希望首先检查数据,如果它已经存在,如果存在,则必须将其替换并且不再添加。

有没有 yii 功能,或者我该怎么做?

Producten控制器部分:

foreach($_POST as $key => $value){
    if(substr($key, 0,5) == 'maat_'){
        $index_expl = explode('_',$key);
        $index = $index_expl['1'];

        $aantal = $_POST['aantal_'.$index];

        $maten = explode(',',$value);
        foreach($maten as $maat_key => $maat){
            $kleuren = explode(',',$_POST['kleur_'.$index]);
                foreach($kleuren as $kleur_key => $kleur){
                    $voorraad = new Voorraad();
                    $voorraad->product_id = $model->id;
                    $voorraad->maat = $maat;
                    $voorraad->kleur = $kleur;
                    $voorraad->aantal = $aantal;
                    $voorraad->backorder = (int)$_POST['backorder'];
                    $voorraad->save();
                }
        }
    }
}
4

2 回答 2

1

替换以下内容:

$voorraad = new Voorraad();

和 :

$voorraad = Voorraad::model()->findByPk($model->id); // assuming id is primary key, you can also use `findByAttributes`
if($voorraad == null) $voorraad = new Voorraad();

$voorraad->save();也用于更新记录。

于 2015-01-19T10:01:32.287 回答
0

只需在您的表单中放置一个隐藏的输入字段:

<div class="form-group hidden">
    <input name="id" value="<?php echo YOURID;?>"/>
</div>

检查id您的服务器中是否存在empty(),如果不只是添加;如果存在则更新。

于 2015-01-19T09:58:00.467 回答