什么是正确的关系?- Laravel

我正在尝试为一个非营利组织建立一个领土管理系统。


TMA 的目的是将区域分配给不同的用户。用户可以请求被分配到一个区域,超级管理员可以拒绝或确认。


每个领土都有不同的类型(例如:A 类、B 类和 C 类)。每个用户也有不同的类型(A、B 或 C)


用户只能查看和请求相同类型的区域,并且只能查看和请求当前未分配给其他用户的区域。


(例如:类型 A 的用户可以查看和请求类型 A 的区域)。


数据库架构:

territories

- id

- type_id

- name


users

- id

- type_id

- name


types

- id

- name


assignments

- id

- territory_id

- user_id

- status (enum: confirmed, declined, requested, canceled)

我尝试建立关系,但发现这并不简单。(或者也许我只是没有做对)


这应该用查询构建器来完成吗?如果是这样,检索与 Auth User type_id 对应的可用领土列表(尚未分配)的正确方法是什么?


慕姐4208626
浏览 99回答 2
2回答

胡说叔叔

您需要为特定的 检索所有分配的 teriteri type_id,然后需要从领土表中找到剩余的 teriteri。$user = Auth::user();$same_type_users = DB::table('users')->where('type_id',$user->type_id)->pluck('id');$all_assigned_teritory = DB::table('assignments')->where('user_id','IN',$same_type_users)->pluck('id');$available_teritories= DB::table('territories')->where('id', 'NOT IN', $all_assigned_teritory)->where('type_id' , $user->type_id)->value('email');

交互式爱情

你可以用雄辩。如果用户只能拥有 1 个区域,则为 1 对 1;如果用户可以拥有多个区域,则为 1 对多。
打开App,查看更多内容
随时随地看视频慕课网APP