Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Письменов Дмитрий Иванович
/
yourroomads
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit addba62f
authored
Jun 17, 2021
by
Vladislav
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#20304 Проблемы на epl3
1 parent
83188a98
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
151 additions
and
116 deletions
app/Console/Commands/DictionaryCampaignsSyncByCampaign.php
app/Http/Controllers/TokensController.php
app/Models/AdGroup.php
app/Models/Campaigns.php
app/Models/Keyword.php
app/Models/Pivots/GoalAdGroup.php
app/Models/Pivots/GoalKeyword.php
app/Service/Requests/Direct/GetAdGroups.php
app/Service/Requests/Direct/GetKeywords.php
database/migrations/2021_06_17_121424_create_goal_keywords_unique.php
app/Console/Commands/DictionaryCampaignsSyncByCampaign.php
View file @
addba62
...
@@ -45,18 +45,47 @@ class DictionaryCampaignsSyncByCampaign extends Command
...
@@ -45,18 +45,47 @@ class DictionaryCampaignsSyncByCampaign extends Command
{
{
Campaigns
::
has
(
'dictionaryCampaignSynchronizedNeedSynced'
)
->
forManaged
()
->
get
()
->
each
(
function
(
Campaigns
$campaign
)
{
Campaigns
::
has
(
'dictionaryCampaignSynchronizedNeedSynced'
)
->
forManaged
()
->
get
()
->
each
(
function
(
Campaigns
$campaign
)
{
$campaign
->
load
([
$campaign
->
load
([
'groups.keywords'
,
'groups
ForNotKeywordsLoadable
.keywords'
,
'dictionaryCampaignSynchronizedNeedSynced'
'dictionaryCampaignSynchronizedNeedSynced'
]);
]);
$campaign
->
dictionaryCampaignSynchronizedNeedSynced
->
each
(
function
(
DictionaryCampaign
$dictionaryCampaign
)
use
(
$campaign
)
{
$campaign
->
dictionaryCampaignSynchronizedNeedSynced
->
each
(
function
(
DictionaryCampaign
$dictionaryCampaign
)
use
(
$campaign
)
{
$campaign
->
groups
->
each
(
function
(
AdGroup
$adGroup
)
use
(
$dictionaryCampaign
)
{
$campaign
->
groups
ForNotKeywordsLoadable
->
each
(
function
(
AdGroup
$adGroup
)
use
(
$dictionaryCampaign
)
{
$goalAdGroup
=
GoalAdGroup
::
updateOrCreateByMain
(
$adGroup
,
$dictionaryCampaign
);
$goalAdGroup
=
GoalAdGroup
::
updateOrCreateByMain
(
$adGroup
,
$dictionaryCampaign
);
$adGroup
->
keywords
->
each
(
function
(
Keyword
$keyword
)
use
(
$goalAdGroup
,
$dictionaryCampaign
)
{
$data_keywords
=
$adGroup
->
keywords
->
map
(
function
(
Keyword
$keyword
)
use
(
$goalAdGroup
,
$dictionaryCampaign
)
{
GoalKeyword
::
updateOrCreateByMain
(
$keyword
,
$goalAdGroup
,
$dictionaryCampaign
);
return
GoalKeyword
::
getDataByMain
(
$keyword
,
$goalAdGroup
,
$dictionaryCampaign
);
})
->
toArray
();
GoalKeyword
::
upsert
(
$data_keywords
,
[
'dictionary_campaign_id'
,
'dictionary_campaign_external_id'
,
'goal_ad_group_id'
,
'goal_ad_group_external_id'
,
'keyword_id'
,
'deleted_at'
,
],
[
'dictionary_campaign_id'
,
'dictionary_campaign_external_id'
,
'goal_ad_group_id'
,
'goal_ad_group_external_id'
,
'keyword_id'
,
'deleted_at'
,
]);
$goalKeywordQuery
=
GoalKeyword
::
where
(
'dictionary_campaign_id'
,
$dictionaryCampaign
->
getKey
())
->
where
(
'goal_ad_group_id'
,
$goalAdGroup
->
getKey
());
if
(
count
(
$data_keywords
))
{
$goalKeywordQuery
->
whereNotIn
(
'keyword_id'
,
array_column
(
$data_keywords
,
'keyword_id'
));
}
$goalKeywords
=
$goalKeywordQuery
->
get
();
$goalKeywords
->
each
(
function
(
GoalKeyword
$goalKeyword
)
{
$goalKeyword
->
delete
();
});
});
});
});
...
...
app/Http/Controllers/TokensController.php
View file @
addba62
...
@@ -281,9 +281,7 @@ class TokensController extends Controller
...
@@ -281,9 +281,7 @@ class TokensController extends Controller
}
}
$dictionary
->
token
()
->
dissociate
();
$dictionary
->
token
()
->
dissociate
();
$dictionary
->
dictionaryCampaigns
->
each
(
function
(
DictionaryCampaign
$dictionaryCampaign
)
{
$dictionary
->
dictionaryCampaigns
()
->
delete
();
$dictionaryCampaign
->
delete
();
});
$dictionary
->
save
();
$dictionary
->
save
();
return
Redirect
::
route
(
'token.edit'
,
$token
->
getKey
())
->
with
(
'success'
,
'City deleted.'
);
return
Redirect
::
route
(
'token.edit'
,
$token
->
getKey
())
->
with
(
'success'
,
'City deleted.'
);
...
...
app/Models/AdGroup.php
View file @
addba62
...
@@ -50,6 +50,7 @@ use Illuminate\Support\Collection;
...
@@ -50,6 +50,7 @@ use Illuminate\Support\Collection;
* @method static Builder|AdGroup whereMobileAppAdGroup($value)
* @method static Builder|AdGroup whereMobileAppAdGroup($value)
* @method static Builder|AdGroup whereSmartAdGroup($value)
* @method static Builder|AdGroup whereSmartAdGroup($value)
* @method static Builder|AdGroup forKeywordsLoadable()
* @method static Builder|AdGroup forKeywordsLoadable()
* @method static Builder|AdGroup forNotKeywordsLoadable()
* @method static Builder|AdGroup forUpdatedSelf()
* @method static Builder|AdGroup forUpdatedSelf()
* @method static Builder|AdGroup newModelQuery()
* @method static Builder|AdGroup newModelQuery()
* @method static Builder|AdGroup newQuery()
* @method static Builder|AdGroup newQuery()
...
@@ -163,34 +164,6 @@ class AdGroup extends Model
...
@@ -163,34 +164,6 @@ class AdGroup extends Model
public
static
function
boot
()
public
static
function
boot
()
{
{
parent
::
boot
();
parent
::
boot
();
static
::
created
(
function
(
AdGroup
$ad_group
)
{
if
(
$ad_group
->
campaign
)
{
$ad_group
->
campaign
->
dictionaryCampaigns
()
->
update
([
'synced_need'
=>
Carbon
::
now
(),
]);
}
});
static
::
updated
(
function
(
AdGroup
$ad_group
)
{
if
(
GoalAdGroup
::
getPropertiesCopyWithPivot
()
->
first
(
function
(
$property_name
)
use
(
$ad_group
)
{
return
$ad_group
->
{
$property_name
}
!==
$ad_group
->
getOriginal
(
$property_name
);
}))
{
$ad_group
->
campaign
->
dictionaryCampaigns
()
->
update
([
'synced_need'
=>
Carbon
::
now
(),
]);
}
if
(
self
::
getPropertiesWatch
()
->
first
(
function
(
$property_name
)
use
(
$ad_group
)
{
return
$ad_group
->
{
$property_name
}
!==
$ad_group
->
getOriginal
(
$property_name
);
}))
{
$ad_group
->
goalGroups
()
->
has
(
'dictionaryCampaignSynchronized'
)
->
forExternal
()
->
update
([
'updated_need'
=>
Carbon
::
now
(),
]);
}
});
}
}
/**
/**
...
@@ -211,6 +184,15 @@ class AdGroup extends Model
...
@@ -211,6 +184,15 @@ class AdGroup extends Model
return
$query
->
whereNull
(
'keywords_loaded_at'
);
return
$query
->
whereNull
(
'keywords_loaded_at'
);
}
}
/**
* @param Builder $query
* @return Builder
*/
public
function
scopeForNotKeywordsLoadable
(
$query
)
{
return
$query
->
whereNotNull
(
'keywords_loaded_at'
);
}
public
function
goalGroups
()
public
function
goalGroups
()
{
{
return
$this
->
hasMany
(
GoalAdGroup
::
class
,
'ad_group_id'
);
return
$this
->
hasMany
(
GoalAdGroup
::
class
,
'ad_group_id'
);
...
...
app/Models/Campaigns.php
View file @
addba62
...
@@ -42,6 +42,7 @@ use Illuminate\Support\Collection;
...
@@ -42,6 +42,7 @@ use Illuminate\Support\Collection;
* @property-read int|null $dictionaries_count
* @property-read int|null $dictionaries_count
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\AdGroup[] $groups
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\AdGroup[] $groups
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\AdGroup[] $groupsForKeywordsLoadable
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\AdGroup[] $groupsForKeywordsLoadable
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\AdGroup[] $groupsForNotKeywordsLoadable
* @property-read int|null $groups_count
* @property-read int|null $groups_count
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Variable[] $dictionaryCampaignVariables
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Variable[] $dictionaryCampaignVariables
* @property-read int|null $dictionary_campaign_variables_count
* @property-read int|null $dictionary_campaign_variables_count
...
@@ -222,41 +223,6 @@ class Campaigns extends Model
...
@@ -222,41 +223,6 @@ class Campaigns extends Model
});
});
}
}
public
function
copyGroupInGoalGroup
()
{
$campaign
=
$this
;
$campaign
->
dictionaryCampaignSynchronized
->
each
(
function
(
DictionaryCampaign
$dictionaryCampaign
)
use
(
$campaign
)
{
$campaign
->
groups
->
each
(
function
(
AdGroup
$adGroup
)
use
(
$dictionaryCampaign
)
{
GoalAdGroup
::
updateOrCreateByMain
(
$adGroup
,
$dictionaryCampaign
);
});
});
}
public
function
copyGroupInGoalKeyword
()
{
$campaign
=
$this
;
$campaign
->
dictionaryCampaignSynchronized
->
each
(
function
(
DictionaryCampaign
$dictionaryCampaign
)
use
(
$campaign
)
{
$dictionaryCampaign
->
groups
->
each
(
function
(
GoalAdGroup
$goalAdGroup
)
use
(
$campaign
,
$dictionaryCampaign
)
{
$goalAdGroup
->
group
->
keywords
()
->
where
(
'campaign_id'
,
$campaign
->
getKey
())
->
get
()
->
each
(
function
(
Keyword
$keyword
)
use
(
$dictionaryCampaign
,
$goalAdGroup
)
{
GoalKeyword
::
updateOrCreateByMain
(
$keyword
,
$goalAdGroup
,
$dictionaryCampaign
);
});
});
});
}
public
function
getBiddingStrategyAttribute
(
$bidding_strategy
)
public
function
getBiddingStrategyAttribute
(
$bidding_strategy
)
{
{
$bidding_strategy
=
json_decode
(
$bidding_strategy
,
true
);
$bidding_strategy
=
json_decode
(
$bidding_strategy
,
true
);
...
@@ -343,6 +309,11 @@ class Campaigns extends Model
...
@@ -343,6 +309,11 @@ class Campaigns extends Model
return
$this
->
groups
()
->
forKeywordsLoadable
();
return
$this
->
groups
()
->
forKeywordsLoadable
();
}
}
public
function
groupsForNotKeywordsLoadable
()
{
return
$this
->
groups
()
->
forNotKeywordsLoadable
();
}
public
function
dictionaryCampaigns
()
public
function
dictionaryCampaigns
()
{
{
return
$this
->
hasMany
(
DictionaryCampaign
::
class
,
'campaign_id'
);
return
$this
->
hasMany
(
DictionaryCampaign
::
class
,
'campaign_id'
);
...
...
app/Models/Keyword.php
View file @
addba62
...
@@ -110,35 +110,6 @@ class Keyword extends Model
...
@@ -110,35 +110,6 @@ class Keyword extends Model
{
{
parent
::
boot
();
parent
::
boot
();
static
::
created
(
function
(
Keyword
$keyword
)
{
if
(
$keyword
->
campaign
)
{
$keyword
->
campaign
->
dictionaryCampaigns
()
->
update
([
'synced_need'
=>
Carbon
::
now
(),
]);
}
});
static
::
updated
(
function
(
Keyword
$keyword
)
{
if
(
GoalKeyword
::
getPropertiesCopyWithPivot
()
->
first
(
function
(
$property_name
)
use
(
$keyword
)
{
return
$keyword
->
{
$property_name
}
!==
$keyword
->
getOriginal
(
$property_name
);
}))
{
$keyword
->
campaign
->
dictionaryCampaigns
()
->
update
([
'synced_need'
=>
Carbon
::
now
(),
]);
}
if
(
self
::
getPropertiesWatch
()
->
first
(
function
(
$property_name
)
use
(
$keyword
)
{
return
$keyword
->
{
$property_name
}
!==
$keyword
->
getOriginal
(
$property_name
);
}))
{
$keyword
->
goalKeywords
()
->
update
([
'updated_need'
=>
Carbon
::
now
(),
]);
}
});
static
::
deleted
(
function
(
Keyword
$keyword
)
{
static
::
deleted
(
function
(
Keyword
$keyword
)
{
if
(
!
$keyword
->
isForceDeleting
())
{
if
(
!
$keyword
->
isForceDeleting
())
{
$keyword
->
goalKeywords
->
each
(
function
(
GoalKeyword
$goalKeyword
)
{
$keyword
->
goalKeywords
->
each
(
function
(
GoalKeyword
$goalKeyword
)
{
...
...
app/Models/Pivots/GoalAdGroup.php
View file @
addba62
...
@@ -117,7 +117,7 @@ class GoalAdGroup extends Pivot
...
@@ -117,7 +117,7 @@ class GoalAdGroup extends Pivot
'dictionary_campaign_external_id'
=>
$dictionaryCampaign
->
external_id
,
'dictionary_campaign_external_id'
=>
$dictionaryCampaign
->
external_id
,
'ad_group_id'
=>
$adGroup
->
getKey
(),
'ad_group_id'
=>
$adGroup
->
getKey
(),
'deleted_at'
=>
null
,
'deleted_at'
=>
null
,
]
,
GoalAdGroup
::
copyPropertyFromMain
(
$adGroup
)
);
]);
}
}
/**
/**
...
@@ -192,11 +192,6 @@ class GoalAdGroup extends Pivot
...
@@ -192,11 +192,6 @@ class GoalAdGroup extends Pivot
return
$this
->
belongsTo
(
DictionaryCampaign
::
class
,
'dictionary_campaign_id'
);
return
$this
->
belongsTo
(
DictionaryCampaign
::
class
,
'dictionary_campaign_id'
);
}
}
public
function
dictionaryCampaignSynchronized
()
{
return
$this
->
dictionaryCampaign
()
->
synchronized
();
}
public
function
goalKeywords
()
public
function
goalKeywords
()
{
{
return
$this
->
hasMany
(
GoalKeyword
::
class
,
'goal_ad_group_id'
);
return
$this
->
hasMany
(
GoalKeyword
::
class
,
'goal_ad_group_id'
);
...
...
app/Models/Pivots/GoalKeyword.php
View file @
addba62
...
@@ -122,16 +122,16 @@ class GoalKeyword extends Pivot
...
@@ -122,16 +122,16 @@ class GoalKeyword extends Pivot
->
all
();
->
all
();
}
}
static
public
function
updateOrCreate
ByMain
(
Keyword
$keyword
,
GoalAdGroup
$goalAdGroup
,
DictionaryCampaign
$dictionaryCampaign
)
static
public
function
getData
ByMain
(
Keyword
$keyword
,
GoalAdGroup
$goalAdGroup
,
DictionaryCampaign
$dictionaryCampaign
)
{
{
return
GoalKeyword
::
updateOrCreate
(
[
return
[
'dictionary_campaign_id'
=>
$dictionaryCampaign
->
getKey
(),
'dictionary_campaign_id'
=>
$dictionaryCampaign
->
getKey
(),
'dictionary_campaign_external_id'
=>
$dictionaryCampaign
->
external_id
,
'dictionary_campaign_external_id'
=>
$dictionaryCampaign
->
external_id
,
'goal_ad_group_id'
=>
$goalAdGroup
->
getKey
(),
'goal_ad_group_id'
=>
$goalAdGroup
->
getKey
(),
'goal_ad_group_external_id'
=>
$goalAdGroup
->
external_id
,
'goal_ad_group_external_id'
=>
$goalAdGroup
->
external_id
,
'keyword_id'
=>
$keyword
->
getKey
(),
'keyword_id'
=>
$keyword
->
getKey
(),
'deleted_at'
=>
null
,
'deleted_at'
=>
null
,
]
,
GoalKeyword
::
copyPropertyFromMain
(
$keyword
))
;
];
}
}
/**
/**
...
...
app/Service/Requests/Direct/GetAdGroups.php
View file @
addba62
...
@@ -83,6 +83,8 @@ class GetAdGroups extends DirectRequest
...
@@ -83,6 +83,8 @@ class GetAdGroups extends DirectRequest
->
keyBy
(
'external_id'
);
->
keyBy
(
'external_id'
);
}
}
$campaign_ids_synced_need
=
[];
foreach
(
$response
[
'result'
][
'AdGroups'
]
as
$ad_group
)
{
foreach
(
$response
[
'result'
][
'AdGroups'
]
as
$ad_group
)
{
$external_id
=
(
string
)
$ad_group
[
'CampaignId'
];
$external_id
=
(
string
)
$ad_group
[
'CampaignId'
];
...
@@ -122,13 +124,19 @@ class GetAdGroups extends DirectRequest
...
@@ -122,13 +124,19 @@ class GetAdGroups extends DirectRequest
'updated_self'
=>
null
,
'updated_self'
=>
null
,
];
];
AdGroup
::
updateOrCreate
([
$ad_group
=
AdGroup
::
updateOrCreate
([
'external_id'
=>
$external_id
,
'external_id'
=>
$external_id
,
],
$data
);
],
$data
);
$campaign
->
update
([
if
(
$ad_group
->
wasRecentlyCreated
)
{
'groups_loaded_at'
=>
Carbon
::
now
(),
$campaign_ids_synced_need
[
$ad_group
->
campaign_id
]
=
true
;
}
elseif
(
$ad_group
->
wasChanged
([
'campaign_id'
]))
{
$campaign_ids_synced_need
[
$ad_group
->
campaign_id
]
=
true
;
}
elseif
(
$ad_group
->
wasChanged
(
$ad_group
::
getPropertiesWatch
()
->
toArray
()))
{
$ad_group
->
goalGroups
()
->
has
(
'dictionaryCampaign'
)
->
forExternal
()
->
update
([
'updated_need'
=>
Carbon
::
now
(),
]);
]);
}
}
else
{
}
else
{
$goalAdGroup
=
GoalAdGroup
::
firstWhere
(
'external_id'
,
$external_id
);
$goalAdGroup
=
GoalAdGroup
::
firstWhere
(
'external_id'
,
$external_id
);
...
@@ -149,6 +157,25 @@ class GetAdGroups extends DirectRequest
...
@@ -149,6 +157,25 @@ class GetAdGroups extends DirectRequest
}
}
if
(
$this
->
getToken
()
->
isMain
())
{
if
(
isset
(
$this
->
getParams
()[
'SelectionCriteria'
][
'CampaignIds'
]))
{
Campaigns
::
whereIn
(
'external_id'
,
$this
->
getParams
()[
'SelectionCriteria'
][
'CampaignIds'
])
->
update
([
'groups_loaded_at'
=>
Carbon
::
now
(),
]);
}
if
(
count
(
$campaign_ids_synced_need
))
{
Campaigns
::
findMany
(
array_keys
(
$campaign_ids_synced_need
))
->
each
(
function
(
Campaigns
$campaign
)
{
$campaign
->
dictionaryCampaigns
()
->
update
([
'synced_need'
=>
Carbon
::
now
(),
]);
});
}
}
}
catch
(
\Exception
$e
)
{
}
catch
(
\Exception
$e
)
{
Log
::
debug
(
$e
);
Log
::
debug
(
$e
);
throw
$e
;
throw
$e
;
...
...
app/Service/Requests/Direct/GetKeywords.php
View file @
addba62
...
@@ -4,6 +4,7 @@ namespace App\Service\Requests\Direct;
...
@@ -4,6 +4,7 @@ namespace App\Service\Requests\Direct;
use
App\Jobs\ProcessCallLimitedAPI
;
use
App\Jobs\ProcessCallLimitedAPI
;
use
App\Models\AdGroup
;
use
App\Models\AdGroup
;
use
App\Models\Campaigns
;
use
App\Models\Keyword
;
use
App\Models\Keyword
;
use
App\Models\Pivots\GoalAdGroup
;
use
App\Models\Pivots\GoalAdGroup
;
use
App\Models\Pivots\GoalKeyword
;
use
App\Models\Pivots\GoalKeyword
;
...
@@ -91,13 +92,15 @@ class GetKeywords extends DirectRequest
...
@@ -91,13 +92,15 @@ class GetKeywords extends DirectRequest
}
}
$ids
=
[];
$ids
=
[];
$campaign_ids_synced_need
=
[];
foreach
(
$response
[
'result'
][
'Keywords'
]
as
$keyword
)
{
foreach
(
$response
[
'result'
][
'Keywords'
]
as
$keyword
)
{
$ad_group
=
$ad_groups
->
get
((
string
)
$keyword
[
'AdGroupId'
]);
$ad_group
=
$ad_groups
->
get
((
string
)
$keyword
[
'AdGroupId'
]);
if
(
!
$ad_group
)
if
(
!
$ad_group
)
{
continue
;
continue
;
}
$external_id
=
(
string
)
$keyword
[
'Id'
];
$external_id
=
(
string
)
$keyword
[
'Id'
];
...
@@ -125,11 +128,17 @@ class GetKeywords extends DirectRequest
...
@@ -125,11 +128,17 @@ class GetKeywords extends DirectRequest
'external_id'
=>
$external_id
'external_id'
=>
$external_id
],
$data
);
],
$data
);
$ids
[]
=
$keyword
->
getKey
();
if
(
$keyword
->
wasRecentlyCreated
)
{
$campaign_ids_synced_need
[
$keyword
->
campaign_id
]
=
true
;
$ad_group
->
update
([
}
elseif
(
$keyword
->
wasChanged
([
'campaign_id'
]))
{
'keywords_loaded_at'
=>
Carbon
::
now
(),
$campaign_ids_synced_need
[
$keyword
->
campaign_id
]
=
true
;
}
elseif
(
$keyword
->
wasChanged
(
$keyword
::
getPropertiesWatch
()
->
toArray
()))
{
$keyword
->
goalKeywords
()
->
has
(
'dictionaryCampaign'
)
->
forExternal
()
->
update
([
'updated_need'
=>
Carbon
::
now
(),
]);
]);
}
$ids
[]
=
$keyword
->
getKey
();
}
else
{
}
else
{
$goalKeyword
=
GoalKeyword
::
firstWhere
(
'external_id'
,
$external_id
);
$goalKeyword
=
GoalKeyword
::
firstWhere
(
'external_id'
,
$external_id
);
...
@@ -154,6 +163,22 @@ class GetKeywords extends DirectRequest
...
@@ -154,6 +163,22 @@ class GetKeywords extends DirectRequest
}
}
if
(
$this
->
getToken
()
->
isMain
())
{
if
(
$this
->
getToken
()
->
isMain
())
{
if
(
isset
(
$this
->
getParams
()[
'SelectionCriteria'
][
'AdGroupIds'
]))
{
AdGroup
::
whereIn
(
'external_id'
,
$this
->
getParams
()[
'SelectionCriteria'
][
'AdGroupIds'
])
->
update
([
'keywords_loaded_at'
=>
Carbon
::
now
(),
]);
}
if
(
count
(
$campaign_ids_synced_need
))
{
Campaigns
::
findMany
(
array_keys
(
$campaign_ids_synced_need
))
->
each
(
function
(
Campaigns
$campaign
)
{
$campaign
->
dictionaryCampaigns
()
->
update
([
'synced_need'
=>
Carbon
::
now
(),
]);
});
}
$keywordQuery
=
Keyword
::
query
();
$keywordQuery
=
Keyword
::
query
();
if
(
isset
(
$this
->
getParams
()[
'SelectionCriteria'
][
'AdGroupIds'
]))
{
if
(
isset
(
$this
->
getParams
()[
'SelectionCriteria'
][
'AdGroupIds'
]))
{
...
...
database/migrations/2021_06_17_121424_create_goal_keywords_unique.php
0 → 100644
View file @
addba62
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
class
CreateGoalKeywordsUnique
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
table
(
'goal_keywords'
,
function
(
Blueprint
$table
)
{
$table
->
unique
([
'dictionary_campaign_id'
,
'dictionary_campaign_external_id'
,
'goal_ad_group_id'
,
'goal_ad_group_external_id'
,
'keyword_id'
,
'deleted_at'
,
]);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
//
}
}
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment