Php 我可以使用Laravel 5功能保存每个公司每个用户的职位吗?

Php 我可以使用Laravel 5功能保存每个公司每个用户的职位吗?,php,jquery,mysql,laravel-5,pivot-table,Php,Jquery,Mysql,Laravel 5,Pivot Table,这是我的第一个问题,请原谅任何协议错误 我也是新来的拉威尔5。我看了基础视频系列(特别是“同步标签”,并将其用于简单的数据透视表),搜索了论坛和更多的在线内容,但实际上我甚至不确定我搜索的内容是否是实现我希望的正确方法 我正在尝试创建/更新/编辑用户的个人资料,以跟踪他们的工作经验。因此,用户可以拥有多个职位,这些职位将链接到公司 我希望公司表是单独的,这样用户可以从下拉列表中选择现有公司。职位也是一样——如果职位存在,比如“CEO”,我希望用户能够选择该职位,而不是添加新职位 我创建了一个包含

这是我的第一个问题,请原谅任何协议错误

我也是新来的拉威尔5。我看了基础视频系列(特别是“同步标签”,并将其用于简单的数据透视表),搜索了论坛和更多的在线内容,但实际上我甚至不确定我搜索的内容是否是实现我希望的正确方法

我正在尝试创建/更新/编辑用户的个人资料,以跟踪他们的工作经验。因此,用户可以拥有多个职位,这些职位将链接到公司

我希望公司表是单独的,这样用户可以从下拉列表中选择现有公司。职位也是一样——如果职位存在,比如“CEO”,我希望用户能够选择该职位,而不是添加新职位

我创建了一个包含以下字段的表单:

<div class="workexperience">
<!--Work Experience / position   -->
<!--  Form Input -->
<div class="form-group">
{!!Form::label('positions_list', 'Work Experience:')!!}
{!!Form::select('positions_list', $positions, null, ['id'=> 'positions_list', 'class'=>'form-control','multiple'])!!}
</div>
<!--company-->
<div class="form-group" >
{!!Form::label('companies_list', 'Company:')!!}
{!!Form::select('companies_list', $companies, null, ['id'=>'companies_list','class'=>'form-control','multiple'])!!}
</div>
</div>
<div id="workexperience-placeholder"></div>
<a onclick="cloneMe('#workexperience')" class="btn btn-default btn-block"><span class="icon-entypo icon-plus"></span><b>Add Another</b></a>
这在视觉上满足了我的需求,但并没有像我预期的那样发布一系列职位和公司

因此,我正在努力解决的是如何保存/同步用户、职位和公司

我为公司用户、职位用户和公司职位创建了透视表,如下所示:

<div class="workexperience">
<!--Work Experience / position   -->
<!--  Form Input -->
<div class="form-group">
{!!Form::label('positions_list', 'Work Experience:')!!}
{!!Form::select('positions_list', $positions, null, ['id'=> 'positions_list', 'class'=>'form-control','multiple'])!!}
</div>
<!--company-->
<div class="form-group" >
{!!Form::label('companies_list', 'Company:')!!}
{!!Form::select('companies_list', $companies, null, ['id'=>'companies_list','class'=>'form-control','multiple'])!!}
</div>
</div>
<div id="workexperience-placeholder"></div>
<a onclick="cloneMe('#workexperience')" class="btn btn-default btn-block"><span class="icon-entypo icon-plus"></span><b>Add Another</b></a>
公司用户:
公司id
用户id

职位用户
职位id
用户id

公司职位
公司id
职位id

并设想了如下情景:

已创建用户,
位置链接到用户(使用同步方法)
公司链接到用户(使用同步方法)
职位与公司相关(?)

但我不知道如何同步职位和公司,因为它们可能需要先创建。基本上是想找出如何保持职位和公司之间的关系,特别是因为每个用户的职位和公司之间的关系可能会成倍增加

编辑

因此,我尝试在position\u users表中添加公司ID的建议

我无法解决的是如何同步来自“职位”和“公司”字段的信息,尤其是因为数据库中可能存在或不存在该职位或公司

我正在使用withPivot:

public function users()
{
return $this->belongsToMany('App\User')->withPivot('company_id')->withTimestamps();
}
将“公司id”字段添加到透视表中。但我不知道如何在必须首先创建该id字段时将其添加到数组中

下面是Laracasts-23-同步标记,我正在使用

$user->positions()->sync($this->processPositions($positions));
其中processPositions函数返回来自表单的位置的所有关联id的数组-无论它们是以前存在的还是新创建的

但是,我没有看到如何将公司id添加到此同步功能


请注意,职位和公司字段可以克隆,因此可能存在多个职位和公司的“集合”。

我将有三个表:
用户
公司
,以及
工作历史
work\u history
将是您的透视表,但有几个额外的列:
job\u title
start\u date
end\u date
。这样,用户可以拥有并属于许多工作角色


如果你想重复使用角色,那么你可以将
工作历史
表中的
职务
列替换为
职位id
列。

我问了另一个问题-(由@lukasgeiter回答)-这帮助我解决了我的问题,所以我想把这个问题标记为结束

似乎很多公司可以有很多职位。如果我们同意一个用户只能在一家公司担任一个职位(不能在同一家公司担任两次CEO),那么您可以在
职位用户
表中添加一个
公司id
,并在所有字段上放置唯一索引,或者,不要让
position\u user
表将
position\u id
添加到
company\u user
并执行相同的操作。听起来不错吗?嗨@PawelBieszczad,谢谢你的回复。这听起来像是一个可能的选择,我将进一步探讨它!我试图让这个概念发挥作用,但我很挣扎。我已经在position\u user表中添加了一个company\u id,但看不到在公司不存在时如何使用“sync”更新该id。有什么建议吗?如果公司还不存在,那么用户怎么可能在那里有职位?你需要先创建公司,然后再创建关系。谢谢……我理解你的逻辑点——这就是我正在努力做到的。对原来的问题做了一些修改。谢谢@martin bean的回复,我会试试的!