Задать вопрос
@Hfnas

Как исправить ошибку Integrity constraint violation ' Column 'crmCompanyID' cannot be null '?

я ищу запись удовлетворяющее условию ['amoID' => $contacts[0]->getId(), 'crmCompanyID'=>$companyID] если нет , то создаем запись, а у меня говорит , что crmCompanyID не может быть равен нулю.
БД:
CREATE TABLE IF NOT EXISTS `crmAmoUser` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `amoID` bigint(20) UNSIGNED NOT NULL COMMENT 'Ид в амо',
  `name` varchar(190) NOT NULL COMMENT 'Имя',
  `crmCompanyID` int(11) NOT NULL,
  `created` timestamp NULL DEFAULT NULL,
  `updated` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `AMOID` (`amoID`,`crmCompanyID`) USING BTREE,
  KEY `CRMAmoUserCompany` (`crmCompanyID`) USING BTREE,
  KEY `CRMNameCompany` (`name`,`crmCompanyID`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8

Модель:
class AmoUser extends BaseCRM
{
    protected $table = 'crmAmoUser';

    protected $casts = [
        'created' => 'datetime',
        'updated' => 'datetime',
        'name' => 'string',
        'amoID' => 'int',
        'crmCompanyID' => 'int',
    ];

    protected $fillable = [
        'name',
        'amoID',
         'crmCompanyID'
    ];

    public function Company(){
        return $this->belongsTo(Company::class, 'crmCompanyID');
    }
}


$amoCRMIntegration=new AmoCRMIntegration($company->id);
                $amoCRMIntegration->getLeadsWithContacts($all);

class AmoCRMIntegration{
 public function __construct($crmCompanyID) {

        $this->crmCompanyID=(int)$crmCompanyID;
}
....
function getLeadsWithContacts(){
F1::import($leads,$this->crmCompanyID,$constants);
}
....
}


class F1

public static function import($datas, $companyID, $constants=[])
    {
            foreach ($datas as $row) {

   $mainUserField = $row->getResponsibleUserId();
//$companyID то сбрасывается (выдает нижележащую ошибку), то работает
По факту амоконтакт есть, но $companyID то равен пустому значению, то единичке.
  $amoUserEntity = AmoUser::where('amoID', $mainUserField)->where('crmCompanyID',$companyID)->first();

                    if ($amoUserEntity===null){
                        $amoUserEntity=new AmoUser();
                        $amoUserEntity->amoID=$mainUserField;
                        $amoUserEntity->crmCompanyID=$companyID;
                        $amoUserEntity->name="fromLead";
                        $amoUserEntity->save();
                    }
}


а то выдает ошибку
Illuminate\Database\QueryException : SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'crmCompanyID' cannot be null (SQL: insert into `crmAmoUser` (`crmCompanyID`, `amoID`, `updated`, `created`) values (, 11198626, 2025-01-07 19:25:50, 2025-01-07 19:25:50)
  • Вопрос задан
  • 65 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
@kaivladimirv
Посмотри стек вызовов в логах. После вызова каких функций происходит твоя ошибка. Ошибка не здесь «$amoContactEntity->crmCompanyID=(int)$companyID;», т.к. тут работа происходит с AmoContact, а в сообщение об ошибке фигурирует crmAmoUser.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы