Yii 检查记录是否已存在于数据库中 table
Yii check if the record already exsists in database table
我有 2 个模型(producten 和 voorraad)和一个控制器(producten)。
所以我在产品 CRUD (create/update) 中构建了一个表单。
这是自定义表单:
<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 函数,或者我该怎么做?
ProductenController 片:
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();
}
}
}
}
只需在您的表单中放置一个隐藏的输入字段:
<div class="form-group hidden">
<input name="id" value="<?php echo YOURID;?>"/>
</div>
用empty()
检查你的服务器中是否存在id
,如果不存在则添加;如果存在则更新。
替换以下内容:
$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();
也用于更新记录。
我有 2 个模型(producten 和 voorraad)和一个控制器(producten)。 所以我在产品 CRUD (create/update) 中构建了一个表单。 这是自定义表单:
<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 函数,或者我该怎么做?
ProductenController 片:
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();
}
}
}
}
只需在您的表单中放置一个隐藏的输入字段:
<div class="form-group hidden">
<input name="id" value="<?php echo YOURID;?>"/>
</div>
用empty()
检查你的服务器中是否存在id
,如果不存在则添加;如果存在则更新。
替换以下内容:
$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();
也用于更新记录。