如何获取从表数据中的主表数据有很多关系laravel 6资源

我有两个表,用户(主)和产品(从),模型如下所示


用户型号:


class User extends Authenticatable {

    protected $fillable = [

       'name', 'email', 'password', 'api_token', 'role_id', 'no_telpon'

    ];


    protected $hidden = [

       'password', 'remember_token',

    ];


   public function products()

   {

      return $this->hasMany('App\Product');

   }

}

产品型号:


class Product extends Model

{

  protected $table = 'products';


  protected $guarded = ['id'];


  protected $fillable = [

    'nama_produk',

    'user_id',

    'description'

  ];


 public function user()

 {

    return $this->belongsTo('App\User');

 }

}

产品的资源如下所示


public function toArray($request) {

  return [

    'id' => $this->id,

    'nama_produk' => $this->nama_produk,

    'user_id' => $this->user_id,

    'description' => $this->description

  ]

}

控制器具有获取所有产品的功能


public function index()

{

    try {

        $data = new ProductCollection(Product::all());

        return response()->json($data);

    } catch (\Throwable $th) {

        return response()->json($th);

    }

}

我的问题是 ProductResource 中的 user_id 返回一个数字(id),因为它与 User 表有关系,我希望结果返回类似这样的内容


{

  {

    "id":1,

    "nama_produk": "Bakso Goreng",

    "user_id": {

       "id":"1",

       "name":"Andi",

       "email":"andi@gmail.com",

       "no_telpon":"00998422122"

    },

    "description":"Makanan berat"

  }

}

因此, user_id 中有一个嵌套,其中包含添加产品的用户的数据,而不仅仅是数字(id),我该怎么做?


函数式编程
浏览 87回答 1
1回答

繁星coding

尝试这个:public function index(){    try {        $data = new ProductCollection(Product::with('user')->all());        return response()->json($data);    } catch (\Throwable $th) {        return response()->json($th);    }}编辑:public function toArray($request) {  return [    'id' => $this->id,    'nama_produk' => $this->nama_produk,    'user_id' => $this->user_id,    'user' => $this->user,    'description' => $this->description  ]}或者public function toArray($request) {  return [    'id' => $this->id,    'nama_produk' => $this->nama_produk,    'user_id' => $this->user,    'description' => $this->description  ]}
打开App,查看更多内容
随时随地看视频慕课网APP