Дублирование, скорее всего, происходит из запроса. Можете ли вы использовать Laravel вспомогательные методы dump()
или dd()
результаты сразу после запуска запроса для подтверждения? например, dd($data)
сразу после запроса позволит вам увидеть результаты, которые возвращает запрос, и проверить, соответствуют ли они ожиданиям или нет.
Я полагаю, что проблема может заключаться в присоединении к product_details. Каково намерение использовать FIND_IN_SET()
?
Запрос будет намного легче читать и понимать, если он разбит на несколько строк. Возможно, будет проще устранить неполадки, если вы переключитесь на построитель запросов, который будет выглядеть примерно так:
$data = DB::table('orders')
->select([
'orders.deliver_date',
'orders.grand_total',
'orders.notification_status',
'orders.order_status',
'orders.orders_date',
'orders.orders_date',
'orders.orders_id',
'orders.payment_status',
'orders.product_id',
'subcategory.image',
DB::raw('GROUP_CONCAT(subcategory.name_of_subcategory) as subcategory'),
])
->join('product_details', 'orders.product_id', '=', 'product_details.product_id')
->join('subcategory', 'product_details.sub_id', '=', 'subcategory.sub_id')
->where('orders.user_id', '=', $userId)
->groupBy(
'orders.product_id',
'orders.deliver_date',
'orders.order_status',
'orders.orders_id',
'orders.notification_status',
'orders.orders_date',
'orders.payment_status',
'orders.orders_subtotal',
'subcategory.image',
'orders.grand_total'
)
->get();