【问题标题】:Where Clause doesnt NOT returning the correct data in LaravelWhere 子句没有在 Laravel 中返​​回正确的数据
【发布时间】:2019-11-11 08:16:38
【问题描述】:

假设我有 Eloquent Query

$drivers = Driver::whereRaw('driver_number not in (select driver_number from buses) OR driver_number = ?', [$bus->driver_number])
                    ->where('station_id', 3)
                    ->get();

所以我想获取所有分配到 3 号站的公共汽车的司机,但它返回所有司机,我只想要 3 号站的司机,但这似乎不起作用。

这里是驱动表

【问题讨论】:

  • 你为什么使用这个:- whereRaw('driver_number not in (select driver_number from buses) OR driver_number = ?', [$bus->driver_number])
  • 因为它返回我想要的数据,但我应该如何指定 staion @SahilGupta
  • 我不明白你的预期输出。

标签: mysql laravel eloquent query-builder


【解决方案1】:

从总线上检索所有驱动程序编号

$driverNumbers = Bus::pluck('driver_number');

这将根据您上面提到的条件检索所有驱动程序。

$drivers = Driver::where('station_id', 3)
                 ->whereNotIn('driver_number', $driverNumbers)
                 ->where('driver_number', '<>', $bus->driver_number)
                 ->get();

【讨论】:

  • 最后一个不起作用,它什么也不显示,但上面的 elquent 正在工作,但我只需要站 3 驱动程序来获取该 eloquent 查询返回的数据。
  • 只查询Driver::where('station_id',3)会得到什么?它是否显示所有具有 station_id 3 的驱动程序?如果是,那么DB::raw 有问题。
猜你喜欢
  • 2020-05-08
  • 2012-06-08
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多