使用 Laravel 查询构建器重写 MYSQL 查询

Rewrite MYSQL query using Laravel query builder

我正在尝试使用 Laravel 查询构建器

重写 MYSQL 查询

这就是查询

DB::select("SELECT * FROM accomodation WHERE id NOT IN
(SELECT accomodation_id FROM bookings
WHERE (`checkin` <= '$request->in' AND  `checkout` >= '$request->out'));");

这就是我到目前为止所做的

Accommodation::whereNotIN('id', function($q)
  {
    $q->select('accomodation_id')
    ->from('bookings')
    ->where('checkin', '<=', '$request->out')
    ->where ('checkout', '>=', '$request->in');
  })
->get();

问题是第一个查询给了我预期的结果,但第二个不是

有人可以指出我做错了什么吗?

我想你打错了。查看 $request->in$request->out。你可能想翻转它。以及为什么使用 '$request->in' 而不是 $request->in。它将解析为字符串而不是值

您没有use。例如 php Accommodation::whereNotIN('id', function($q) use ($request) 并且您需要根据请求翻转条件 ;)