Laravel От Сырой БД до Красноречивого

я пытаюсь изменить свой сырой запрос laravel до красноречивого, так как теперь у меня есть некоторые основы красноречивого, и я попытался сделать блоги в laravel. Но некоторая сложность остается прежней.

Во-первых: это мой Raw SQL:

select group_concat(DISTINCT q.sku SEPARATOR ", ") as sku, `sales_flat_order`.`status`, `sales_flat_order`.`increment_id`, `sales_flat_order`.`shipping_description`, `sales_flat_order`.`subtotal`, `sales_flat_order`.`customer_email`, `d`.`country_id`, `d`.`region`, `d`.`city`, `d`.`postcode`, group_concat(DISTINCT q.name SEPARATOR ", ") as name, concat(sales_flat_order.created_at) AS created_at from `sales_flat_order` left join `sales_flat_order_item` as `q` on `sales_flat_order`.`entity_id` = `q`.`order_id` left join `sales_flat_order_address` as `d` on `d`.`parent_id` = `sales_flat_order`.`entity_id` group by `sales_flat_order`.`increment_id` order by `sales_flat_order`.`increment_id` asc 

Мой сырой запрос в Laravel:

 SalesFlatOrder::leftJoin('sales_flat_order_item as q','sales_flat_order.entity_id', '=','q.order_id') ->leftJoin('sales_flat_order_address as d', 'd.parent_id', '=', 'sales_flat_order.entity_id') ->select((array(DB::Raw('group_concat(DISTINCT q.sku SEPARATOR ", ") as sku'),'sales_flat_order.status','sales_flat_order.increment_id', 'sales_flat_order.shipping_description','sales_flat_order.subtotal','sales_flat_order.customer_email','d.country_id', 'd.region', 'd.city','d.postcode',DB::raw('group_concat(DISTINCT q.name SEPARATOR ", ") as name'),DB::raw('concat(sales_flat_order.created_at) AS created_at')))) ->groupBy('sales_flat_order.increment_id') ->orderBy('sales_flat_order.increment_id') ->paginate(10); 

Теперь я пытаюсь изменить весь этот необработанный запрос в красноречивый. Я уже сделал модели. Итак, следующий мой красноречивый запрос, который находится в моем контроллере.

 public function detailed(){ $sales = SalesFlatOrder::with('address')->groupBy('increment_id')->orderBy('increment_id')->paginate(10); return View::make('detailed')->with('sales', $sales); } 

Моя проблема: 1: У меня есть группа concat (Distinct q.sku). Итак, как это сделать с красноречивым. Потому что иногда вам нужно делать группу по дате. или группой по заказам. Итак, как показать Distinct data так sku column. Итак, как преобразовать этот полноценный необработанный запрос в Eloqeunt, где у нас есть group_concat, Distinct для большого количества столбцов DB

Сначала создайте пользовательскую коллекцию:

 $customCollection = new \Illuminate\Database\Eloquent\Collection; 

Затем вы можете сделать это следующим образом:

 $user =new User; $user->setRawAttributes((array) $userRawData); $customCollection->add($user); 

С уважением!

Вы можете перейти от RAW к Eloquent элегантным запросам с отношениями моделей, соглашением об именах красноречивых таблиц DB (без указания имени таблицы в модели), привязать данные маршрута crom DB и областями.

Но все же иногда вам придется помогать себе с RAW для более сложных операций.