微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从多对多关系表中选择匹配所需值的数据?

如何解决如何从多对多关系表中选择匹配所需值的数据?

我还是 Laravel 的新手。我想在包含等于 3 的关系的表上选择具有字段 role_id 的 ma​​inchallengecategories,因为我只想让 role_id = 3 的用户看到 ma​​inchallengecategories .我应该如何处理我的控制器?

我有四张桌子

1.主要挑战类别

id 姓名
1 A 类
2 B 类
3 C 类
4 D 类

2.用户

id 姓名 角色
1 用户A 1
2 用户B 2
3 用户C 3
4 用户名 3

3.角色

id 姓名 角色
1 管理员 1
2 员工 2
3 用户 3

4. main_challenge_categories_role

id main_challenge_categories_id role_id
1 1 1
2 1 1
3 3 2
4 4 3

这是 MainChallengeCategories 模型

public function users(){
    return $this->hasMany(User::class);
}

public function roles(){
    return $this->belongsToMany(Role::class)->withTimestamps();
}

public function main_challenge_categories_role(){
    return $this->hasMany(MainChallengeCategoryRole::class);
}

用户模型

public function roles(){
    return $this->belongsTo(Role::class,'role');
}

榜样

public function users(){
    return $this->hasMany(User::class);
}

MainChallengeCategoryRole 模型

protected $fillable=['main_challenge_categories_id','role_id'];

public function mainchallengecategories(){
    return $this->belongsTo('App\MainChallengeCategories','main_challenge_categories_id');
}
public function roles(){
    return $this->belongsTo('App\Role','role_id');
}

MainChallengeCategoryController

public function create(){

/$mainchallengecategories = MainChallengeCategoryRole::with('mainchallengecategories') // 预加载 -> where('role_id','3') ->get();/

在这函数里我该怎么做??????????

    return view('user.addChallenge')
    ->with('mainchallengecategories',$mainchallengecategories);
}

感谢大家对我的好意,我总是提前收到。

解决方法

Role.php中:

public function mainChallengeCategoryRoles(){
  return $this->hasMany(MainChallengeCategoryRole::class,'role_id','id');
}

获取角色的主要挑战类别角色:

$mainchallengecategories = Role::find(3)->mainChallengeCategoryRoles;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。