【发布时间】:2017-05-12 19:56:22
【问题描述】:
我有下一个问题。我该如何解决这个问题?我有两张桌子vehicles 和vehicles_extras。在第一个表中有很多列。在第二个表中,我只有 4 列:
id, vehicle_id, vehicletype, vehicle_extra
id 是自动递增的,vehicle_id 来自第一个表的id 列,'vehicletype' 是一个字符串,车辆的类型,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: (select count(*) as aggregate from
vm_vehicleswherevehicletype= car) union (select * from @ 987654335@ 其中vehicletype= 汽车和vehicle_extra= 2))
但是好吧,假设它正在工作,但我有更多值的数组,所以我想使用 whereIn 。
有什么想法吗?我使用 Laravel 5.3。
【问题讨论】:
-
您是要获取两个表中匹配的所有数据(即
SELECT * FROM vehicles WHERE...; SELECT * FROM vehicles_extras WHERE...)还是要获取数据并将vehicles.id 匹配到vehicles_extras.vehicle_id?如果是第一个,请单独获取每个表,而不需要 where,因为听起来您想要所有数据。如果是第二个,请使用JOIN子句。
标签: php mysql laravel-5.3