3 个表 Laravel 之间的关系

我正在尝试创建一个 API 资源,我可以在其中查看来自三个表的响应构建。

  1. 店铺

  2. 命令

  3. 购买

目前,我可以使用路由 (api/store/orders) 去商店(有多个商店)并查看 JSON 响应中的订单。

回复

{

 data: [

  {

   id: 1,

   code: "1f",

   status: "waiting",

   user_name: "Salman",

   created_at: "",

   updated_at: ""

  },

  {

   id: 2,

   code: "2f",

   status: "waiting",

   user_name: "Jerome",

   created_at: "",

   updated_at: ""

  }

 ]

}

但是,当我尝试将我的购买添加到响应中时:


namespace App\Http\Resources;


use Illuminate\Http\Resources\Json\JsonResource;


class Orderresource extends JsonResource

{

    public function toArray($request)

    {

        return [

            'id' => $this->id,

            'code' => $this->code,

            'status' => $this->status,

            'user_name' => $this->user_name,

            // Added purchases

            'order' => $this->purchases,

            'created_at' => (string) $this->created_at,

            'updated_at' => (string) $this->updated_at,

        ];

    }

}

我收到错误响应 Undefined property: stdClass::$purchases


现在我已经将购买添加到我的订单模型中:


  public function purchases()

  {

    return $this->hasMany(Purchase::class);

  }

但是,我知道订单可能取决于我的 show_order_per_store.


在我的功能 OrderController


    public function show_order_per_club($id)

    {

      $order = DB::table('orders')->where('store_id', '=', $id)->get();



      return  Orderresource::collection($order);

    }

现在,此函数获取所有类似商店的订单,但如何将购买添加到商店 API 响应中?


简而言之,我试图获得每个商店的 API 响应,其中包含它所拥有的订单,并且购买属于该订单。


慕工程0101907
浏览 166回答 1
1回答

守候你守候我

DB:table尝试直接使用模型,而不是用于查询:Order::where('store_id', '=', $id)->get();似乎DB:table返回stdClass对象,因此它缺少模型可能提供的所有虚拟属性。
打开App,查看更多内容
随时随地看视频慕课网APP