我想从我在数据库体系结构方面做过的一些混乱的事情开始。
我已经把字段title
,description
,donation_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');
}
如果有一种方法可以做到这一点,那就叫雄辩的关系。我会喜欢其他的帮助,如果用我已经实现的联接来完成工作,那就更好了。
1条答案
按热度按时间unftdfkk1#
使用具有多个通过关系。
https://laravel.com/docs/9.x/eloquent-relationships#has-many-through
在其他方式中,您可以这样查询: