Валидация нескольких записей в БД
Добавлено: 2019.11.07, 10:09
Здравствуйте.
Имеется модель Detail для связи с таблицей в БД. К ней привязана модель-прослойка Detail_Model:
Все прекрасно работает, но... Сделал страницу добавления деталей из списка( textarea ), добавление идет одним запросом:
И это тоже прекрасно работает, но вот в чем проблема - DetailNum должен быть уникальным, для этого использую проверку:
Но при таком подходе для каждого detailNum вызывается метод validate() и соответственно идет запрос к БД. То есть, если я пробую добавить 1000 записей, то для валидации требуется 1000 запросов. Можно ли каким-то образом сделать валидацию одним запросом по аналогии с добавлением записей?
Имеется модель Detail для связи с таблицей в БД. К ней привязана модель-прослойка Detail_Model:
Код: Выделить всё
class Detail_Model extends Model
{
public $id;
public $detailNum;
public $detailName;
public function rules()
{
return [
['detailNum', 'required'],
['detailNum', 'string', 'max' => 64],
['detailNum', 'unique', 'targetClass'=>'app\models\Detail'],
['detailName', 'string', 'max' => 128],
];
}
Код: Выделить всё
if( count( $detailsArr ) > 0 )
Yii::$app->db->createCommand()->batchInsert(\app\models\Detail::tableName(), ['detailNum'], [$detailsArr])->execute();
Код: Выделить всё
if( $detailModel->validate() )
$detailsArr[] = $detailNum;