Почему сбрасываеттся глобальная переменная и выдает ошибку 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');
    }
}

вызов через конструктор

foreach ($companies as $company){
    $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);
}
....
}

далее функция класса 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)

Проблема в том, что через раз выполняется запрос вида

select * from crmAmoUser where crmAmoUser.crmCompanyID is null and amoID = ? and crmCompanyID = ?" (ошибка) в основном запрос вида

select * from crmAmoUser where amoID = ? and crmCompanyID = ?"


Ответы (0 шт):