Если я правильно понял вопрос, следующий код должен исправить вашу проблему.
$products = SoldProducts::whereIn('export_invoice_id', $export_invoice_ids)
->groupBy('product_id')
->join('images', 'product.image_id', '=', 'images.id')
->select([
'products.id',
'products.product_id',
DB::raw('sum(products.quantity) AS quantity'),
DB::raw('(sum(products.sold_price) / count(*)) AS sold_price'),
'images.image'
])
->get();
Если вы используете select, вам нужно выбрать каждый столбец, который вам требуется, в select для Eloquent, чтобы получить его,в противном случае он не потянет колонку за вас.
Вам нужно два DB :: raw на ваш выбор - один для количества и один для проданной цены согласно вашей спецификации;Количество - это простая сумма. Суммирует все элементы по идентификатору продукта. Проданная цена суммируется для начала, а затем делится на номер этого product_id.
Редактировать: Я обновил пример кода - но так как вы не указали, как изображение присоединяется к таблице, я сделал обоснованное предположение. Вам может понадобиться сделать это -> leftJoin, если вам не всегда назначено изображение.