$return=DB::table('products') ->select('products.*', 'images.address') ->leftJoin("images",function($join){ $join->on('products.id', '=', 'images.product_id'); $join->where('images.default','1'); }) ->whereIn('products.id',session("idcompare")) ->get();session('idcompare') tiene valores (1,4,2)products.id está en orden 1,2,4De otra manera, ponga esta línea antes de obtener
->orderByRaw('FIELD(products.id,session("idcompare"))') $arr=[]; foreach(session("idcompare") as $i){ foreach($return as $j) { if ($i == $j->id) { $arr[] = $j; } } } return $arr;