在yii2中实现多选下拉时发生完整性约束冲突错误
我正在尝试使用“cornernote/yii2 linkall”和“kartik-v/yii2-widget-select2”实现多选下拉菜单。我有,它适用于单选多选下拉列表,所以现在我尝试在单选表单中实现两个多选下拉列表,但这里我被卡住了。 当我重复执行更新函数时,它给出了完整性约束违反错误在yii2中实现多选下拉时发生完整性约束冲突错误,yii2,select2,kartik-v,Yii2,Select2,Kartik V,我正在尝试使用“cornernote/yii2 linkall”和“kartik-v/yii2-widget-select2”实现多选下拉菜单。我有,它适用于单选多选下拉列表,所以现在我尝试在单选表单中实现两个多选下拉列表,但这里我被卡住了。 当我重复执行更新函数时,它给出了完整性约束违反错误 Integrity constraint violation – yii\db\IntegrityException SQLSTATE[23000]: Integrity constraint viola
Integrity constraint violation – yii\db\IntegrityException
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '34-1' for key 'PRIMARY'
The SQL being executed was: INSERT INTO `supplier_to_industry` (`supplier_id`, `industry_id`) VALUES (34, 1)
Error Info: Array
(
[0] => 23000
[1] => 1062
[2] => Duplicate entry '34-1' for key 'PRIMARY'
)
↵
Caused by: PDOException
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '34-1' for key 'PRIMARY'
in /var/www/html/final/vendor/yiisoft/yii2/db/Command.php at line 846
数据库表如下所示:
零件(id、名称)
行业(id、名称)
供应商到零件(供应商id,零件id)
供应商至行业(供应商id、行业id)
主表为:-供应商(id,…)
SupplierController.php
超级人力
辅助人力
Supplier.php
在所需表单字段上使用$model变量调用模型名称。例:
<?= $form->field($model->industry,'industry_ids')->widget(Select2::className(),['model' => $model->industry, ...
问题出在foreach上
而不是
foreach ($this->part_ids as $part_name ){
foreach ($this->industry_ids as $industry_name ){
$part = Part::getPartByName($part_name);
$industry = Industry::getIndustryByName($industry_name);
if ($part ||$industry ) {
$parts[] = $part;
$industries[] = $industry;
}
}
}
需要使用:
foreach ($this->production_scope as $part_name ){
$part = Part::getPartByName($part_name);
if ($part) {
$parts[] = $part;
}
}
foreach ($this->target_industry as $industry_name ){
$industry = Industry::getIndustryByName($industry_name);
if ($industry) {
$industries[] = $industry;
}
}
错误显示您有重复的条目。阅读unlinkAll()
,它将删除您的两个模型(供应商和行业)之间的所有关系。啊,我看到您已经从文章所有者那里得到了答案。是的,由于foreach()循环而发生错误。无论如何,谢谢你的时间。使用app/models/yourModelName代码>