У меня определена переменная, $ siteID.Однако Laravel теряет свое значение внутри запроса, и я получаю сообщение об ошибке «Неопределенная переменная: siteID»
$directoryExternalStats = DB::table('directories')
->leftJoin('citations', function($join)
{
$join->on('directories.id', '=', 'citations.directory_id')
->where( function($dirindustries) use($siteID){
$dirindustries->whereRaw('id NOT IN (SELECT DISTINCT directory_model_id FROM directory_model_industry)')
->orWhereRaw('id IN
(SELECT directory_model_id FROM directory_model_industry
(SELECT industry_id FROM industry_site WHERE site_id = '. $siteID .')
;
});
});
Я объявляю переменную для использования внутри запроса, но Laravel не распознает ее.Изменение синтаксиса для использования заполнителя не помогает.
Я попытался включить переменную в первое закрытие:
$directoryExternalStats = DB::table('directories')
->leftJoin('citations', function($join) use($siteID)
{
во второе закрытие:
$join->on('directories.id', '=', 'citations.directory_id')
->where( function($dirindustries) use($siteID){
и в обоих закрытиях:
$directoryExternalStats = DB::table('directories')
->leftJoin('citations', function($join) use($siteID)
{
$join->on('directories.id', '=', 'citations.directory_id')
->where( function($dirindustries) use($siteID){
но я получаю ошибку независимо.С помощью Джонаса я заметил, что включение переменной в оба замыкания приводит к появлению различного сообщения об ошибке: «Отсутствует аргумент 2 для Illuminate \ Database \ Query \ JoinClause :: where ()»
Является ли это экземпляром ошибки Laravel, как упомянуто здесь: https://github.com/laravel/framework/issues/18952 или https://github.com/laravel/framework/issues/5992 или https://github.com/laravel/framework/issues/5466
Или я просто где-то совершаю синтаксическую ошибку?