私は次の質問があります。どのようにして問題を解決できますか?私は2つのテーブルvehicles
とvehicles_extras
を持っています。最初のテーブルには多くの列があります。私は4列有している二番目の表において:Mysql、PHP、Laravelチェックボックスエラー
id, vehicle_id, vehicletype, vehicle_extra
id
は自動インクリメントであるが、vehicle_id
は、最初のテーブルから、「vehicletype」は車両のストリング、タイプ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]: Cardinality violation: 1222 The used SELECT statements have a different number of columns (SQL: (select count(*) as aggregate from
vm_vehicles
wherevehicletype
= car) union (select * fromvm_vehicles_extras
wherevehicletype
= car andvehicle_extra
= 2))
しかし、[OK]を、のは、それが働いているとしましょう、しかし、私が持っていますより多くの値を持つ配列、whereIn
を使用したいと思います。
私はLaravel 5.3を使用します。
あなたは両方のテーブルに一致するすべてのデータを取得しようとしている(つまり、 '* SELECT FROM vehicles WHERE ...; SELECT * FROM vehicles_extras WHERE ... ')、またはデータを取得しようとしていますか?vehicles.idをveh_extras.vehicle_idに一致させようとしていますか?それが最初の場合は、すべてのデータを必要としているように聞こえるので、どこにもなく各テーブルを個別に取得します。 2番目の場合は、 'JOIN'節を使用します。 – aynber