簡體   English   中英

Yii檢查記錄是否已經存在於數據庫表中

[英]Yii check if the record already exsists in database table

我有2個模型(producten和voorraad)和一個控制器(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函數,或者該怎么做?

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();
                }
        }
    }
}

替換以下內容:

$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(); 也用於更新記錄。

只需在表單中放置一個隱藏的輸入字段即可:

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

使用empty()檢查服務器中是否存在id ;如果不存在,則添加;如果存在則更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM