Я делал это на laravel, используя построитель запросов для API
$shipments = DB::table('shipment_batches')
->select(
"shipments.id as shipment_id",
"shipments.fulfillment_id",
"shipments.shipped_address_id",
"shipments.courrier_id",
"shipments.status",
"shipments.is_intro",
"shipments.is_express",
"shipments.shipment_batch_id",
"shipments.intro_shipment_date",
"shipments.intro_shipped_at",
"shipments.tracking_number",
"shipments.is_gift",
"shipments.ship_unit",
"shipments.shipment_notes",
"shipments.is_one_time_product",
"shipments.one_time_product_shipment_date",
"shipments.one_time_product_shipped_at",
"shipments.shipment_options",
"shipments.is_migrated",
"shipments.migration_has_error",
"shipments.in_process_date",
"shipments.shipment_date_at",
"shipments.link",
)
->join('shipments', 'shipments.shipment_batch_id', '=', 'shipment_batches.id')
->join('fulfillments', 'fulfillments.id', '=', 'shipments.fulfillment_id')
->join('subscriptions', 'subscriptions.id', '=', 'fulfillments.subscription_id')
->whereMonth('shipment_batches.shipment_date', '>', date('m'))
->whereYear('shipment_batches.shipment_date', '=', date('Y'))
->where('subscriptions.user_id', $id)
->orderBy('shipment_batches.id', 'ASC')
->get();
return UpcomingShipmentsResource::collection($shipments);
И у меня есть эта коллекция ресурсов
class UpcomingShipmentsResource extends Resource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return [
"id" => $this->id,
"hashed_id" => hashids_encode($this->id),
"padded_id" => id_padder($this->id),
];
}
}
Я просто удалил другие возвращаемые значения массива, чтобы упростить коллекцию.и добавил hashed_id
и padded_id
, чтобы изменить результат перед возвратом в виде json для API
Я получил эту ошибку
Неопределенное свойство: stdClass :: $ id
Можно ли создать коллекцию из построителя запросов?Как?