如何在laravel中根据选定的类别和子类别从数据库检索用户

yrefmtwq  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(125)

我想从我在数据库体系结构方面做过的一些混乱的事情开始。

我已经把字段titledescriptiondonation_amount放在了users表中,而这些字段本来应该放在另一个表中。
在laravel中已经在这些表之间设置了ManyToMany关系。我也尝试连接查询生成器中的表。
在应用程序中有不同的角色。我们将具体讨论Donor当一个Donor在应用程序中注册时。它选择存储在selections表中的多个类别和子类别。现在当一个donor登录到应用程序时。它应该只获得基于所选类别的记录。现在我很困惑,我如何才能检索用户的基础上登录用户选择的类别和子类别。
我已经尝试过连接表,效果很好,但它得到的是针对连接表的所有结果。

DB::table("users")->select('users.*')->from('categories')
            ->join('selections','categories.id', '=', 'selections.category_id')
            ->join('users', 'users.id','=', 'selections.user_id')
            ->join('sub_categories','sub_categories.id', '=', 'selections.sub_category_id')
            ->where('users.status','approved')->paginate(6);

模型类别中的关系

public function users() {
    return $this->belongsToMany(User::class,'selections');
}

模型中的关系用户

public function categories() {
    return $this->belongsToMany(Category::class,'selections');
}

如果有一种方法可以做到这一点,那就叫雄辩的关系。我会喜欢其他的帮助,如果用我已经实现的联接来完成工作,那就更好了。

unftdfkk

unftdfkk1#

使用具有多个通过关系。
https://laravel.com/docs/9.x/eloquent-relationships#has-many-through
在其他方式中,您可以这样查询:

DB::table("users")->select('users.*')
->whereIn('users.id',function($query) use ($specific_category_id){
   $query->select(''user_id')->from('selections')->where('category_id',$specific_category_id)
})
->where('users.status','approved')->paginate(6);

相关问题