Php 如果在列ID中包含

Php 如果在列ID中包含,php,laravel,eloquent,Php,Laravel,Eloquent,如果一列包含多个ID,如何连接两个表 小故事,我有分公司,在我的分公司有很多员工和经理。 我有一个表分支,其中是列经理和员工 我必须向每个经理展示他的分支机构 分支表 身份证件 名称 业务ID 管理者 员工 地位 1. 美女 15 4,5,9,17 44,76,54,72 1. 好吧,你这样做很糟糕。每个分支机构可能有许多员工,每个员工可能有许多分支机构。所以,您应该创建第三个表,名为employee\u branch。建立多对多的关系。如果你用的是拉威尔。 另一个选择是,您可以将驱动程序从my

如果一列包含多个ID,如何连接两个表

小故事,我有分公司,在我的分公司有很多员工和经理。 我有一个表分支,其中是列经理和员工

我必须向每个经理展示他的分支机构

分支表

身份证件 名称 业务ID 管理者 员工 地位 1. 美女 15 4,5,9,17 44,76,54,72 1. 好吧,你这样做很糟糕。每个分支机构可能有许多员工,每个员工可能有许多分支机构。所以,您应该创建第三个表,名为employee\u branch。建立多对多的关系。如果你用的是拉威尔。 另一个选择是,您可以将驱动程序从mysql更改为postgres,后者支持数组。但是最好的选择就是建立一种多对多的关系。如果你想知道怎么做,请在这里留言 正如我从你的桌子上看到的,你有两个多对多的关系。 第一个是分公司和经理,第二个是分公司和员工。 这就是我的想法。 准备多对多关系时,需要第三个表,名为branch_manager。因为一个分支属于多个经理,而一个经理属于多个分支。在第三个表中,我们有branch_id和manager_id。因此,这两个可以简单地相互连接。之后,您可以通过以下方式获得经理的分支机构:

$branches = Manager::find($id)->branches;
$managers = Branch::find($branchID)->managers;
对于分支模型,您必须创建以下函数:

public function managers(){
  return $this->belongsToMany(Branch::class);
}
对于经理模式:

public function branches(){
  return $this->belongsToMany(Manager::class);
}
我想拉威尔会自动生成我告诉你的第三张表。
对于员工,您应该只在分支机构和员工之间执行多对多操作。

最好重新考虑数据库设计。似乎
分行经理
分行员工
应该是单独的表。当您这样设计数据库时,就可以利用常用的高效连接工具来执行这样的搜索查询,当您在一个列中存储多个信息时,这会变得更加困难。这样,你必须检查是否存在错误,并且你需要覆盖几个案例(在开始、结束或中间)。这种模式设计会给你带来很多缺点。最好创建一个查找表。请查看一个开发人员的简短答案,就像你打算重新设计我的表,创建BrangChueMaultMrand和Brangkh员工,然后使用Join语句。正如其他人所说的,你应该考虑一个关系数据库设计。然而,MySQL有一个FIND_IN_SET方法(),可以满足您的需要。是的,我使用的是laravel 7,我想我仍然会使用相同的驱动程序MySQL,因为我做了很多工作,但是数据库表。是的,我必须编辑关系。我有点不明白如何处理这个问题。也许你能给我一些建议。编辑答案编辑我的帖子。