Как сделать этот тип запроса в Laravel? - PullRequest
0 голосов
/ 30 октября 2019

Это SQL-запрос, но как я могу сделать это в laravel?

SELECT id FROM clientes where email is null and phone is null and id in(SELECT DISTINCT(cliente_id) FROM reservas WHERE dia < now())

Это код, который я пытался сделать:

$usersIdDel = DB::table("clientes")->select('id')
            ->whereNotNull('email')->whereNotNull('phone')
            ->whereIn('id',function($query){            $query->select('cliente_id')->from('reservas')->distinct()->where('dia','<',date('Y-m-d'));
            })
            ->get();
      $clientes = Cliente::select()->orderBy('nombre', 'desc')->get();
        return view('admin.clientes.index')->with(compact('clientes'));

Ответы [ 2 ]

1 голос
/ 30 октября 2019

В любом случае есть два запроса, поэтому ..

 $clientIds =  DB::table('reservas')->select('cliente_id')->distinct()->where('dia','<',date('Y-m-d'))->get();

затем,

$usersIdDel = DB::table("clientes")->select('id')
        ->whereNotNull('email')->whereNotNull('phone')
        ->whereIn('id', $clientIds->pluck('cliente_id')->all())
        ->get();
0 голосов
/ 30 октября 2019

Вы можете просто сделать это, не задумываясь о сложности преобразования или разделения запросов на несколько операторов построителя запросов.

$sql = "SELECT id FROM clientes where email is null and phone is null and id in(SELECT DISTINCT(cliente_id) FROM reservas WHERE dia < now())";
$result = DB::select($sql);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...