http://php.net/manual/en/function.array-intersect.php
Assuming they are arrays
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
i have two query result
if($request->has('city'))
{
$data1=$this->vehicle->searchVehiclesByGeneralFilter('cities',$request->city);
}
if($request->has('engine_type'))
{
$data2=$this->vehicle->searchVehiclesByGeneralFilter('engine_types',$request->engine_type);
}
i want only common rows in these two arrays $data1 ,$data2
For your current situation I would try to use something like this;
function searchVehiclesByGeneralFilter(array $filters = [])
{
$query = DB::table('vehicles');
foreach ($filters as $col => $id) {
$query->where($col . '.id', $id);
}
$query->where('vehicles.condition', 'used')
->where('images.size', 's')
->where('status', 'approved')
->join('vehicle_types', 'vehicle_types.id', '=' , 'vehicles.vehicle_type_id')
->join('manufactures', 'manufactures.id' , '=' , 'vehicles.manufacture_id')
->join('brands', 'brands.id', '=', 'manufactures.brand_id')
->join('models', 'models.id' , '=' , 'vehicles.model_id')
->join('vehicle_body_types', 'vehicle_body_types.id', '=', 'models.bodytype_id')
->join('model_versions', 'model_versions.id', '=', 'vehicles.model_version_id')
->join('cities', 'cities.id' , '=' , 'vehicles.city_id')
->join('images', 'images.post_id' , '=' , 'vehicles.id')
->join('transmissions', 'transmissions.id', '=', 'vehicles.transmission_id')
->join('assemblies', 'assemblies.id', '=', 'vehicles.assembly_id')
->join('engine_types', 'engine_types.id', '=', 'vehicles.engine_type_id')
->join('registration_cities', 'registration_cities.id', '=', 'vehicles.reg_city_id')
->select(
'vehicles.*',
'vehicle_types.title as vehicle_type',
'brands.title as manufacture',
'models.title as model',
'model_versions.title as model_version',
'cities.title as city',
'images.url',
'transmissions.title as transmission',
'assemblies.title as assembly',
'vehicle_body_types.title as body_type',
'registration_cities.title as reg_city'
)
->orderby('vehicles.featured', 'desc');
return $query->paginate(35);
}
Then you can call it like this;
$filters = [];
if ($request->has('city')) {
$filters['cities'] = $request->city;
}
if ($request->has('engine_type')) {
$filters['engine_types'] = $request->engine_type;
}
$paginated_data = $this->vehicle->searchVehiclesByGeneralFilter($filters);
Still, recommended is to use the Eloquent Query Builder. You can easily build relationships (joins), scopes and filters for this kind of situations.
Please or to participate in this conversation.