AmoContact::firstOrNew(['amoID' => $contacts[0]->getId(),'crmCompanyID'=>$companyID]);
protected $fillable = [
'name',
'amoID',
'crmCompanyID'
];
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'
];
...
}
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 сек
Вытаскивание из api: амо записей занимаетi=1: <b>0.78996706008911</b>
Вытаскивание из бд: сделки занимаетget -amolead:i=32405417: <b>0.042673110961914</b>
Вытаскивание статуса из бд: <b>0.035158157348633</b>
Вытаскивание контакта занимает из бд <b>0.035752058029175</b>
Вытаскивание пользователя занимает из бд <b>0.034740924835205</b>
Всего импорт записи занимает из бд<b>0.19417405128479</b>
public function getLead($all=false)
{
$filter = new LeadsFilter();
$filter->setLimit(100); //было 250
$leads = [];
try {
$leads[] = $this->apiClient->leads()->get($filter, [LeadModel::CONTACTS]); //<b>B=0.88946199417114 </b>сек(microtime(true))
TestLeadModel::import($leads,$this->crmCompanyID,$constants);//<b>А</b>
$i = 2;
//разбивка по страницам
while ($leads[0]->getNextPageLink() != null) {
$filter->setPage($i);
$leads[] = $this->apiClient->leads()->get($filter, [LeadModel::CONTACTS]);//<b>B</b>
TestLeadModel::import($leads,$this->crmCompanyID,$constants);//<b>А</b>
$i++;
}
} catch (AmoCRMApiNoContentException $exception) {
Log::error(__METHOD__ . ' setLead:' . $exception->getMessage());
}
}
INSERT into table(col1,co2. col3) values(), (),()
Update table set col=А, col=B where id=1; Update table set col=А1, col=B1 where id=2
if (isset($contacts[0])) {
$TestContactEntity = TestContact::firstOrNew(['crmCompanyID'=>$companyID,'TestID' => $contacts[0]->getId()]);
if ($TestContactEntity->TestID===null){
$TestContactEntity->TestID=$contacts[0]->getId();
$TestContactEntity->crmCompanyID=$companyID;
$TestContactEntity->save();
}
$entity->crmTestContactID = $TestContactEntity->id;
}else{
$entity->crmTestContactID = null;
}
UPDATE table
SET row = CASE
WHEN id = X THEN 'A'
WHEN id = Y THEN 'B'
ELSE row
END
WHERE id in(X, Y)
for ($i = 1; $i <= 100; ++$i) {
предполагается foreach ($rows as $row) {
.https://laravel.com/docs/11.x/eloquent#chunking-results
https://laravel.com/docs/11.x/eloquent#cursors
Можно поподробнее, как обьединять, мне нужно еще проверить на существование, если нет, то записать в бд, например, как тут:
$TestStatusEntity = TestStatus::firstOrNew(['crmCompanyID'=>$companyID,'TestID' => $row->getStatusId()]);
if ($TestStatusEntity->TestID===null){
$TestStatusEntity->TestID=$row->getStatusId();
$TestStatusEntity->crmCompanyID=$companyID;
$TestStatusEntity->save();
}
Кроме того, выборка по одной записи из бд в цикле - классическая ошибка, нужно объединить все запросы в один через join или in(), а дальше работать с полученным массивом.
$TestStatusEntity = TestStatus::firstOrNew(['crmCompanyID'=>$companyID,'TestID' => $row->getStatusId()]);
if ($TestStatusEntity->TestID===null){
$TestStatusEntity->TestID=$row->getStatusId();
$TestStatusEntity->crmCompanyID=$companyID;
$TestStatusEntity->save();
}
ports:
- '9008:9008'
version: "3.7"
services:
app:
build:
args:
user: www
uid: 1000
context: ./
dockerfile: Dockerfile
image: laravel-image
container_name: laravel-app
restart: unless-stopped
working_dir: /var/www/
volumes:
- ./:/var/www
- ./php/local.ini:/usr/local/etc/php/conf.d/local.ini
networks:
- app-network
ports:
- '9008:9008'
ports:
- '9008:9008'
version: "3.7"
services:
app:
build:
args:
user: www
uid: 1000
context: ./
dockerfile: Dockerfile
image: laravel-image
container_name: laravel-app
restart: unless-stopped
working_dir: /var/www/
volumes:
- ./:/var/www
- ./php/local.ini:/usr/local/etc/php/conf.d/local.ini
networks:
- app-network
ports:
- '9004:9008'
Откройте в VSCode папку ~/Projects/b24.loc/ и увидите основной репо и его связью.
Открыв папку ~/Projects/b24.loc/packages/server увидите репо который там.
Через меню File — Open Folder...
Если не хотите игнорить папку server, то другой вариант — удалить ненужный пустой репо в папке
rm -rf ~/Projects/b24.loc/packages/.git
Если вы смогли войти в каталог packages сразу после клонирования не создавая его, значит он уже есть в репозитории и игнор тут не поможет.