Есть ли способ, которым я могу присоединиться к другому столу в eloquent?
вот мой код
/**
* Return users subscriptions
*
* @param int $id User ID
* @return Illuminate\Response
*/
public function show($id)
{
$subscriptions = Subscription::with([
'plan',
'user',
'ccpayment',
'fulfillment',
'shippingAddress',
'fulfillment.shipments',
'fulfillment.shipments.courrier',
'fulfillment.shipments.shipment_batch'
])
->whereHas('user', function($query) use ($id) {
return $query->where('id', $id);
})
->get();
$this->subscriptions = &$subscriptions;
self::includeCoupon();
return SubscriptionsResource::collection($this->subscriptions);
}
private function includeCoupon()
{
foreach ($this->subscriptions as $key => $sub) {
$coupon = CouponSubscription::where('subscription_id', $sub->id)
->first();
$this->subscriptions[$key]->coupon = $coupon;
}
}
В приведенном выше коде, как вы можете видеть, я использовал цикл, только чтобы получить купоны.
Проблема возникает, когда я пытался использовать resources
что-то вроде
return [
'id' => $this->hashed_id,
'coupon' => is_object($this->coupon) ? new CouponResource($this->coupon) : [],
];
В этой строке 'coupon' => is_object($this->coupon) ? new CouponResource($this->coupon) : [],
Хотя я получил купоны, но получил []
по API
Вот код купонного ресурса
public function toArray($request)
{
return [
'name' => $this->name,
'code' => $this->code,
'description' => $this->description,
];
}