我正在使用Laravel 5.7创建一个项目管理系统,其中有我的表User
,Project
,Project User
和Task(not important here)
。我有困难
尝试编辑我的Project
数据,因为每个项目都有许多User(协作者)。我的Project User
表充当数据透视表,用于存储多对多关系。所有项目Edit
都将在一个引导模式下显示在单个页面中,该页面我使用了foreach
循环来显示所有数据。 所以我的问题现在是我在选择找到的选项时试图将数据加载到我的多选标记中。
示例用户表具有
James
Dexter
在“ A”项目中,合作者是
James
当我编辑项目“ A”时,select
输入标签将使用James
属性设置selected
,而Dexter
将被“取消选择”。我设法填充了User
名称并设置了selected
属性,但是由于某些逻辑错误,如果我编辑项目“ A”,它将同时设置两者 {{1 }}和James
被选中。
这些是我的桌子
用户
Dexter
项目
u_id PK
name
项目用户
p_id PK
p_name
status (Active/Inactive)
type (Team/Personal)
项目负责人(索引)
pu_id PK
p_id FK of Project table
u_id FK of user table
刀片视图
//Get Team data based on project type and user id
$teamProject = DB::table('projects_users')
->join('projects','projects_users.p_id','=','projects.p_id')
->select('projects_users.*','projects.*')
->where('projects.type','=','Team')
->where('projects.status','=','Active')
->where('u_id','=',Auth::user()->u_id)
->get();
//Get all collaborator
$allProjUser = DB::table('projects_users')
->join('projects','projects_users.p_id','=','projects.p_id')
->select('projects_users.*','projects.*')
->where('projects.type','=','Team')
->where('projects.status','=','Active')
->where('projects_users.role','=','Colab')
->get()->keyBy('u_id');
$allUser = User::where('u_id', '!=', Auth::id())->get();
如果我的句子结构或英语不清楚,我们将不胜感激。谢谢
答案 0 :(得分:0)
通过控制器传递“选定的”值与尝试在视图中应用逻辑会起作用吗?
对您的项目进行一些假设。
在控制器的“编辑”方法中...
$users = User::all();
$project = Project::findOrFail($id);
foreach ($project->user as $projectUser) {
$selectedTags[] = $projectUser->id;
}
return view('edit', compact('project', 'users', 'selectedTags');
然后在您看来...
<select multiple name="collaborators[]">
@foreach ($users as $user)
@if (in_array($user->id, $selectedTags))
<option selected value="{{$user->id}}">{{$user->name}}</option>
@else
<option value="{{$user->id}}">{{$user->name}}</option>
@endif
@endforeach
</select>
然后在“存储”方法中,从project_user中删除,其中p_id =已编辑项目的ID。为每个collaborators []数组添加一条新记录。