Александр Макаров: нужно проверить таблицу list, а именно все ее записи, чтобы в поле newid не было уже такого значения (равное $com). Если значение такое есть, то добавлять в таблицу ничего не будем. Условно, чтобы в колонке newid были только уникальные записи.
Александр Макаров: т.к. мне нужно проверить несколько полей воспользуюсь criteria. Т.е. когда я буду добавлять запись в бд не из формы, то сначала выполнится rules и все пройдет отлично?
public function rules()
{
return array(
array('name','uniqueIdAndName',),
);
}
public function uniqueIdAndName($attribute,$params=array())
{
if(!$this->hasErrors())
{
$params['criteria']=array(
'condition'=>'id=:id',
'params'=>array(':id'=>$this->id),
);
$validator=CValidator::createValidator('unique',$this,$attribute,$params);
$validator->validate($this,array($attribute));
}
}
Александр Макаров: А если мне нужно писать условие, например, если поле id, name совпали с добавляемыми данными, а поле titile не совпало, то я обновляю значение id,name,title. А если id,name,title не совпадают с добавляемыми значениями, то создаю новую запись в БД. Как это реализуется?
Rusnire: можно проверить, возможно yii умеет грамотно обрабатывать такое. Если не умеет, то должен быть какой-то в модели параметр отвечающий за уникальность столбца.
Дмитрий Байчапанов: А если мне нужно писать условие, например, если поле id, name совпали с добавляемыми данными, а поле titile не совпало, то я обновляю значение id,name,title. А если id,name,title не совпадают с добавляемыми значениями, то создаю новую запись в БД. Как это реализуется?
Не забывайте сделать сначала проверку validate() или save() чтобы узнать прошли ли данные валидацию, а то будете думать что сохранили данные а оно выдало false