在yii2中实现多选下拉时发生完整性约束冲突错误

在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

我正在尝试使用“cornernote/yii2 linkall”和“kartik-v/yii2-widget-select2”实现多选下拉菜单。我有,它适用于单选多选下拉列表,所以现在我尝试在单选表单中实现两个多选下拉列表,但这里我被卡住了。 当我重复执行更新函数时,它给出了完整性约束违反错误

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