Потеря значения переменной внутри области запроса whereRaw - PullRequest
0 голосов
/ 27 марта 2019

У меня определена переменная, $ 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

Или я просто где-то совершаю синтаксическую ошибку?

...