如何在Laravel中返回关联所有订阅服务的用户数据?
问题场景
用户与服务为多对多关系:一个用户可订阅多个服务,一个服务可被多个用户订阅。已创建中间表account_service_user且运行正常,现需实现返回用户资源时关联该用户的所有订阅服务。
用户模型
// 关联关系 public function account_status() { return $this->hasMany(AccountStatus::class, 'user_id'); } public function my_services() { return $this->belongsToMany(CountService::class, 'account_service_user', 'user_id', 'account_service_id'); }
控制器方法(返回所有用户)
public function index() { //$user = User::all(); //$user -> load('my_services'); $user = User::with('my_services')->get(); return $this->sendResponse(ClientResource::collection($user), '客户端数据获取成功'); }
服务模型
public function services() { return $this->belongsTo(Service::class, 'service_id'); } public function users() { return $this->belongsToMany(User::class, 'account_service_user', 'account_service_id', 'user_id'); }
中间表迁移文件
public function up() { Schema::create('account_service_user', function (Blueprint $table) { $table->id(); $table->integer('user_id')->unsigned(); $table->integer('account_service_id')->unsigned(); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); $table->foreign('account_service_id')->references('id')->on('countService')->onDelete('cascade'); $table->timestamps(); }); }
内容的提问来源于stack exchange,提问作者Eduardo Latchizy
相关产品推荐
相关产品推荐

