Mysql,Php,Laravel复选框错误



我有下一个问题。我该如何解决这个问题?我有两个桌子vehiclesvehicles_extras.在第一个表中有很多列。在第二个表中,我只有 4 列:

id, vehicle_id, vehicletype, vehicle_extra

id是自动增量,vehicle_id是第一个表中的id列,"车辆类型"是一个字符串,车辆类型,vehicle_extra是额外数量。

所以我有一个搜索表单,extras在哪里是复选框,extra[].在web.php我有以下代码:

$data1=DB::table('vehicles_extras')->where('vehicletype','$vt')->where('vehicle_extra',$extras);

....

if(Input::has('extras'))
$query->union($data1);
$data=$query->get();

为此我得到错误:

SQLSTATE[21000]:基数冲突:1222 使用的 SELECT 语句具有不同数量的列(SQL:(选择 count(*) 作为vm_vehicles聚合,其中vehicletype= 汽车)联合(从vm_vehicles_extras中选择 *,其中vehicletype= 汽车,vehicle_extra= 2))

但是好吧,假设它正在工作,但我有具有更多值的数组,所以我想使用whereIn.

知道吗?我使用Laravel 5.3。

首先,您必须在vehiclesvehicles_extras之间创建one-to-many关系。

Vehicle模型中添加以下关系:

public function vehicleExtras()
{
return $this->hasMany('AppVehicleExtra');
}

然后,您可以将其查询为:

Vehicle::whereHas('vehicleExtras', function ($q) use($extra) {
$q->where('vehicletype', 'car')
->whereIn('vehicle_extra', $extra);
})->get();