Как использовать подзапрос в laravel и конвертировать SQL-запрос в laravel - PullRequest
0 голосов
/ 28 октября 2018

На самом деле я работаю над проектом обслуживания, где предыдущий разработчик использовал базовый SQL-запрос, но я хочу преобразовать его в большой запрос .. Вот запрос Sql: -

$directories = DB::select('
        SELECT d.id, d.name, d.url_match, d.login_url, d.register_url, d.notes, d.logo, d.require_verification FROM `directories` d 
        WHERE d.id
        NOT IN (
            SELECT c.directory_id FROM citations c
            INNER JOIN directories d
            WHERE c.directory_id = d.id
            AND d.allow_citation = 1
            AND c.site_id = ' . $siteID .'
        )
        AND d.allow_citation = 1
        AND d.deleted_at IS NULL
        AND d.tier = '. $tier .'
        ORDER BY d.tier ASC         
    ');

Я пытался преобразовать вниже: -

 $directories = Directories::select('id','name','url_match','login_url','register_url','notes',
                 'logo','require_verification')
                ->where(['allow_citation'=>1,'tier'=>$tier])
                ->whereNUll('deleted_at')->get();

Может кто-нибудь мне помочь.Заранее спасибо

1 Ответ

0 голосов
/ 28 октября 2018

Наконец-то я покончил с собой, выгуливая: -

$directories = Directories::select('id','name','url_match','login_url','register_url','notes','logo','require_verification')->whereNotIn('id', function($query) use($siteID){
        $query->select('citations.directory_id')
            ->from('citations')
            ->whereRaw('directories.id=citations.directory_id')
            ->where('directories.allow_citation', 1)
            ->where('citations.site_id', $siteID);
        })->where(['allow_citation'=>1,'tier'=>$tier])->whereNUll('deleted_at')->get();
...