将数据“已选择”填充到选择标签(多个)上

时间:2018-10-25 15:28:45

标签: laravel-5.7

我正在使用Laravel 5.7创建一个项目管理系统,其中有我的表UserProjectProject UserTask(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();

如果我的句子结构或英语不清楚,我们将不胜感激。谢谢

1 个答案:

答案 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 []数组添加一条新记录。