Задать вопрос
  • Почему не показываются внутренняя репозитории в пхпшторм?

    @Hfnas Автор вопроса
    да, в внутренняя папка (внутренний репозиторий) стоит в гитигноре для первого репозитория b24laravel (гитигноре)
    Написано
  • Правильна ли вложенность структуры по бэм?

    @Hfnas Автор вопроса
    Сергей delphinpro, спасибо огромное!
    Написано
  • Правильна ли вложенность структуры по бэм?

    @Hfnas Автор вопроса
    Сергей delphinpro, спасибо!
    а модификаторы js
    Так писать?
    div class="input-block__grp">
                            <input
                              class="input-block__field input-block__field-weight-tn_js"
                              autocomplete="off"
                              type="text"
                              value=""
                              readonly
                            />
                          </div>
    Написано
  • Правильна ли вложенность структуры по бэм?

    @Hfnas Автор вопроса
    Сергей delphinpro, а как должно быть?
    <div class="crm-form-calc__table-cell">
            <span  class="table-cell-inner-span"></span>
    </div>
    Написано
  • Как исправить ошибку Integrity constraint violation ' Column 'crmCompanyID' cannot be null '?

    @Hfnas Автор вопроса
    Алексей Уколов, ThunderCat
    Ребята, спасибо огромное!!!!!!
    через раз запрос такой
    select * from `crmAmoUser` where `crmAmoUser`.`crmCompanyID` is null and `amoID` = ? and `crmCompanyID` = ?"

    естественно, не найдено будет. Кривое ядро.
    Даже не знаю как быть,
    Аналогично,
    677fea43a15b0502544143.png
    вот с чем связаны мои мучения....длиной в неделю.
    придется сырые запросы применять, чтоб было точнее...
    Написано
  • Как исправить ошибку Integrity constraint violation ' Column 'crmCompanyID' cannot be null '?

    @Hfnas Автор вопроса
    Алексей Уколов, @kaivladimirv
    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');
        }
    }


    class Company extends BaseCRM
    {
        protected $table = 'crmCompany';
        public static $checkChangelog = false;
    
        protected $casts = [
            'created' => 'datetime',
            'updated' => 'datetime',
            'active' => 'boolean',
        ];
    
        protected $fillable = [
            'active'
        ];
    
        public function AmoUsers()
        {
            return $this->hasMany(AmoUser::class, "crmCompanyID");
        }
    }
    Написано
  • Как исправить ошибку Integrity constraint violation ' Column 'crmCompanyID' cannot be null '?

    @Hfnas Автор вопроса
    Hfnas, Алексей Уколов, значит дело не в переменной, не знаю в чем?
    Даже пробовала грубо присвоить 1, как тут
    if ($companyID==="" || $companyID===null|| empty($companyID)){
                            echo "errorst\n"; // не вывело
                        }
    var_dump($companyID); // выводит int(1)
                            echo $companyID; //выводит 1
    echo $mainUserField ; //выводит 11198626
    $amoUserEntity = AmoUser::where('amoID', $mainUserField)->where('crmCompanyID',$companyID)->first();
    if ($amoUserEntity===null){
    Но попало сюда, несмотря на то что юзер в бд есть
          var_dump($companyID); //вывело int(1)
                            echo $companyID; //вывело 1
                            $amoUserEntity=new AmoUser();
                            $amoUserEntity->amoID=$mainUserField;
                            $amoUserEntity->crmCompanyID=1; // вот тут, грубо присваиваю 1.
                            $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)
                        }
    Написано
  • Как исправить ошибку Integrity constraint violation ' Column 'crmCompanyID' cannot be null '?

    @Hfnas Автор вопроса
    Алексей Уколов, благодарю за желание помочь, боюсь, совсем безнадежный случай.-(
    Таким образом я проверяла переменную на наличие русских символов в названии переменной, поэтому вылезло $company.
    Поправила вопрос, я даже не знаю, как смотреть стек вызовов в логах.
    Наверное ставить Log::error() в каждом участке кода.
    Самое главное, что я спрашивала :
    if ($companyID==="" || $companyID===null|| empty($companyID)){
                            echo "errorst\n"; // не вывело
                        }
    $amoUserEntity = AmoUser::where('amoID', $mainUserField)->where('crmCompanyID',$companyID)->first();
    if ($amoUserEntity===null){
    Но попало сюда, несмотря на то что юзер в бд есть
          var_dump($companyID); //вывело int(1)
                            echo $companyID; //вывело 1
                            $amoUserEntity=new AmoUser();
                            $amoUserEntity->amoID=$mainUserField;
                            $amoUserEntity->crmCompanyID=$companyID;
                            $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)
                        }
    Написано
  • Как исправить ошибку Integrity constraint violation ' Column 'crmCompanyID' cannot be null '?

    @Hfnas Автор вопроса
    kaivladimirv, спасибо, поправила вопрос.
    Написано
  • Как исправить ошибку Integrity constraint violation ' Column 'crmCompanyID' cannot be null '?

    @Hfnas Автор вопроса
    Алексей Уколов, Благодарю за подддержку, очистка кеша и переименование папки кеша не помогло, дебаг включаю, нет ошибки.
    Такое ощущение, что не успевает считать переменную
    $companyID
    из функции public static function import($datas, $companyID, $constants=[])
    она теряется, если перед проблемным кодом я вставлю принудительно $companyID=1, то работает. но я константы ставить не могу, так как ид компании могут быть другими.
    public static function import($datas, $companyID, $constants=[])

    или времени не хватает, чтобы получить из свопа глобальную переменную $companyIDб если я правильно понимаю, а если переменная находится в свопе, то надо вставлять usleep(100) перед вызовом функции... Попробую , или у вас другое предложение? Переменнная $companyID может находится в памяти, которой якобы не хватает, и она стирается...

    Если память стиралась, то выдало бы другую ошибку.
    Вот смотрите функция import обрабатывает 250 записей, а переменная companyID попадает через конструруктор, и в какой то момент, она, возможно, просто стирается или попадает в своп . Что в этом случае делать?
    у меня memory_limit=1024M . с другой стороны ругалась бы на память, выдает ошибку на память. Да , попробую usleep.
    Написано
  • Model::updateOrCreate почему не считывает в первом параметре, второй элемент массива?

    @Hfnas Автор вопроса
    Алексей Уколов,
    ThunderCat,

    Закомментировала строку модели
    protected $fillable = [
            'name',
            'amoID',
           // 'crmCompanyID'
        ];

    и все заработало, хотя неправильно, но так получилось. Я никак не могу найти ошибку в переменнных. Спасибо за внимание!!!!!
    Написано
  • Model::updateOrCreate почему не считывает в первом параметре, второй элемент массива?

    @Hfnas Автор вопроса
    Алексей Уколов, @ThunderCat
    В общем замена не помогла на where
    $amoContactEntity = AmoContact::where('amoID',$contacts[0]->getId())->where('crmCompanyID',$companyID)->first();
                        if ($amoContactEntity===null){
                            $amoContactEntity=new AmoContact();
                            $amoContactEntity->crmCompanyID=(int)$companyID;
                            $amoContactEntity->amoID=$contacts[0]->getId();
                            $amoContactEntity->name="fromLead";
                            $amoContactEntity->save();
                        }
    
                        $entity->crmAmoContact2ID = $amoContactEntity->id;


    почему пропадает в конструкторе
    foreach ($companies as $company){
    
                    $amoCRMIntegration=new AmoCRMIntegration($company->id);
                    $amoCRMIntegration->getContacts($all); // пробовала передать $amoCRMIntegration->getLeadsWithContacts($all,(int)$company->id);  .. все равно никак
    }

    Выдает ошибку:
    Integrity constraint violation: 1048 Column 'crmCompanyID' cannot be null (SQL: insert into `crmAmoContact` (`amoID`, `crmCompanyID`, `name`, `updated`, `created`) values (142, , FromLead, 2025-01-07 22:36:29, 2025-01-07 22:36:29))


    AmoLeadModel::import($leads,$this->crmCompanyID,$constants);


    Далее манпуляции с firstOrNew, where,- обе выдают ошибку...

    У меня то работает, то не работает, когда включаю дебаг , тогда работает код, отловить ошибку не получается

    $amoStatusEntity = AmoStatus::where('amoID', $row->getStatusId())->where('crmCompanyID',$companyID)->first();
                        if ($amoStatusEntity===null){
    //статус существует, но все равно попадает сюда, значит второй where не обрабатывает почему то....
                            var_dump($companyID); //int(1)
                            echo $companyID; //1
                            $amoStatusEntity=new AmoStatus();
                            $amoStatusEntity->amoID=$row->getStatusId();
                            $amoStatusEntity->crmCompanyID=$companyID;
                            $amoStatusEntity->name="fromLead";
                            $amoStatusEntity->save();
                        }


    все равно выводит ошибку
    int(1)
    1
    Illuminate\Database\QueryException : SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'crmCompanyID' cannot be null (SQL: insert into `crmAmoStatus` (`amoID`, `crmCompanyID`, `name`, `updated`, `created`) values (142, , FromLead, 2025-01-07 23:01:44, 2025-01-07 23:01:44))


    class AmoStatus extends BaseCRM
    {
    protected $table = 'crmAmoStatus';

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

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

    677d8ab0cc603341035129.png
    Написано
  • Model::updateOrCreate почему не считывает в первом параметре, второй элемент массива?

    @Hfnas Автор вопроса
    ThunderCat, проще говоря я ищу запись удовлетворяющее условию ['amoID' => $contacts[0]->getId(), ['crmCompanyID'=>$companyID] если нет , то создаем запись, а у меня говорит , что crmCompanyID не может быть равен нулю. Перепишу
    AmoContact::firstOrNew(['amoID' => $contacts[0]->getId(),'crmCompanyID'=>$companyID]);

    на
    $amoContactEntity = AmoContact::where('amoID',$contacts[0]->getId())->where('crmCompanyID',$companyID)->first();
                        if ($amoContactEntity===null){
                            $amoContactEntity=new AmoContact();
                            $amoContactEntity->crmCompanyID=(int)$companyID;
                            $amoContactEntity->amoID=$contacts[0]->getId();
                            $amoContactEntity->name="fromLead";
                            $amoContactEntity->save();
                        }
    
                        $entity->crmAmoContact2ID = $amoContactEntity->id;


    а то выдает ошибку
    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)


    У меня такая запись в бд есть, просто не учитывает почему то crmCompanyID,

    В модели написано

    class AmoContact extends BaseCRM
    {
        protected $table = 'crmAmoContact';
    
        protected $casts = [
            'created' => 'datetime',
            'updated' => 'datetime',
            'name' => 'string',
            'phone' => 'string',
            'phone1' => 'string',
            'phoneNorm' => 'string',
            'email'=>'string',
            'amoID' => 'int',
            'crmAmoUserID' => 'int',
            'crmAmoUser2ID' => 'int',
            'crmAmoContactTypeID' => 'int',
            'crmCompanyID' => 'int',
        ];
    
        protected $fillable = [
            'name',
            'amoID',
            'crmCompanyID' //не учитывает в AmoContact::firstOrNew(['amoID' => $mainUserField,'crmCompanyID'=>$companyID]), AmoContact::updateOrCreate(['amoID' => $mainUserField,'crmCompanyID'=>$companyID])
        ];
    .....
    }

    Метод AmoContact::firstOrNew то работает, то не работает.

    По времени исполнения firstOrNew, where работают одинаково. Тогда смысл использовать сырые запросы?
    у меня стоит уникальный индекс на пару amoID, crmCompanyID
    Написано
  • Model::updateOrCreate почему не считывает в первом параметре, второй элемент массива?

    @Hfnas Автор вопроса
    ThunderCat, благодарю за помощь!
    Я подставила значения, которые получаю в цикле....
    Model - абстрактное понятие, так как ломается у меня при любых моделях, , взять тот же

    AmoContact::firstOrNew(['amoID' => $contacts[0]->getId(),'crmCompanyID'=>$companyID]);
    
    //тоже не учитывает второй элемент массива первого параметра,несмотря на то, что
    protected $fillable = [
            'name',
            'amoID',
            'crmCompanyID'
        ];
    
    //заполнено

    Integrity constraint violation: 1048 Column 'crmCompanyID' cannot be null (SQL: insert into `crmAmoContact` (`amoID`, `crmCompanyID`, `updated`, `created`) values (42397607, , 2025-01-06 17:31:54, 2025-01-06 17:31:54))
    Написано
  • Model::updateOrCreate почему не считывает в первом параметре, второй элемент массива?

    @Hfnas Автор вопроса
    Model::updateOrCreate(
        ['amoID' => 43222233, 'crmCompanyID' => 1], // Условия для поиска
        ['updated' => now(), 'created' => now()] // Данные для обновления или создания
    );

    В первом параметре первой функции не учитывает второй элемент массива, если запись не существует, ругается
    Column 'crmCompanyID' cannot be null (SQL: insert into `crmAmoContact` (`amoID`, `crmCompanyID`, `updated`, `created`) values (42397607, , 2025-01-06 17:31:54, 2025-01-06 17:31:54))

    Этот код стирает поля "updated" , "created", и ставит текущее время, если задашь свои значения для полей updated, "created"
    'updated' => "2024-01-01 22:00:24", 'created' => now()
    , что мне не подходит.
    Написано
  • Model::updateOrCreate почему не считывает в первом параметре, второй элемент массива?

    @Hfnas Автор вопроса
    Алексей Уколов, версия ларавела 5.7 , склоняюсь к тому, что плохо работает версия.
    Написано
  • Model::updateOrCreate почему не считывает в первом параметре, второй элемент массива?

    @Hfnas Автор вопроса
    Алексей Уколов,
    AmoContact::firstOrNew(['amoID' => $contacts[0]->getId(),'crmCompanyID'=>$companyID]);

    тоже не учитывает второй элемент массива первого параметра,несмотря на то, что
    protected $fillable = [
            'name',
            'amoID',
            'crmCompanyID'
        ];

    заполнено
    Написано
  • Model::updateOrCreate почему не считывает в первом параметре, второй элемент массива?

    @Hfnas Автор вопроса
    Алексей Уколов,
    class Model extends BaseCRM
    {
        protected $table = 'crmAmoContact';
    
        protected $casts = [
            'created' => 'datetime',
            'updated' => 'datetime',
            'name' => 'string',
            'phone' => 'string',
            'phone1' => 'string',
            'phoneNorm' => 'string',
            'email'=>'string',
            'amoID' => 'int',
            'crmAmoUserID' => 'int',
            'crmAmoUser2ID' => 'int',
            'crmAmoContactTypeID' => 'int',
            'crmCompanyID' => 'int',
        ];
    
        protected $fillable = [
            'name',
            'amoID',
            // 'crmCompanyID'
        ];
    ...
    }

    в бд crmCompanyID'обязательно к заполнению, не может быть нулем.
    Написано
  • Как сделать пакетную обработку в laravel?

    @Hfnas Автор вопроса
    И почему выше AmoLeadModel, а тут TestLeadModel

    Это одно и то же, в самом деле TestLeadModel= AmoLeadModel (просто я переименовала)
    Написано
  • Как сделать пакетную обработку в laravel?

    @Hfnas Автор вопроса
    ThunderCat, спасибо за выручку, заменила $leads[] на $leads (18000 записей отработал за 1час 35 мин). действительно сырые запросы быстрее выполняются
    SELECT * FROM `crmAmoLead` WHERE `amoID`=29705803 and `crmCompanyID`=1
    занимает 0.0003 секунд

    SELECT * FROM `crmAmoStatus` WHERE `amoID`=48505075 and `crmCompanyID`=1
    0.0002 сек

    SELECT * FROM `crmAmoContact` WHERE `amoID`=43222233 and `crmCompanyID`=1
    0.0008 сек


    677ae8c339037392708065.png
    677ae7d5a6367699101116.png
    677ae7e6f3a03352100389.png

    Пробовала Model:::updateOrCreate не сработало в случае создания....(Model::updateOrCreate почему не считывает в первом параметре, второй элемент массива?).
    Попробую завтра с сырыми запросами работать...выборка по одной записи(SELECT * FROM `crmAmoLead` WHERE `amoID`=29705803 and `crmCompanyID`=1
    SELECT * FROM `crmAmoStatus` WHERE `amoID`=48505075 and `crmCompanyID`=1
    SELECT * FROM `crmAmoContact` WHERE `amoID`=43222233 and `crmCompanyID`=1), наверное быстрее будет. Спасибо за наводку.
    Написано