You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:19:01