با سلام
من کوئری زیر رو به eloquent ORM تبدیل کردم ولی خطا داره و یا خروجی مورد نظرم رو نمیده
$query = "SELECT users.id,users.name,roles.persian_name AS role_name,roles.food_discount AS discount,sum(reservations.count) AS total_count,sum(foods.price) AS total_price
FROM `reservations`,users,foods,roles,fields,programs WHERE
reservations.user_id=users.id AND
users.role_id=roles.id AND
fields.food_id=foods.id AND
reservations.field_id=fields.id AND
fields.program_id=programs.id AND
programs.from_date BETWEEN ? AND ? AND
users.building_id=?
GROUP BY (users.id)";
من سعی کردم تبدیلش کنم و این رو نوشتم
$data = DB::table('fields')
->join('reservations', 'reservations.field_id', '=', 'fields.id')
->join('users', 'reservations.user_id', '=', 'users.id')
->join('roles', 'users.role_id', '=', 'roles.id')
->join('foods', 'fields.food_id', '=', 'foods.id')
->join('programs', 'fields.program_id', '=', 'programs.id')
->whereBetween('programs.from_date', [$request->from_date, $request->to_date])
->where('users.building_id', $request->building_id)
->groupBy('users.id')
->select(['users.id','users.name','roles.persian_name AS role_name','roles.food_discount AS discount','reservations.count','foods.price'])
->sum('reservations.count')
->sum('foods.price')
->get();
اما خطا میده
Call to a member function sum() on string
من وقتی این کوئری رو به صورت زیر اجرا میکنم دقیقا درسته و هیچ مشکلی نداره اما pagination نداره
$data = DB::select($query, [$request->from_date, $request->to_date, $request->building_id]);
آیا اینطور کوئری هایی رو اصلا میشه با eloquent پیاده کرد؟؟
با تشکر