首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉力-枢轴连接多个使用嵌套循环。复制user_id

拉力-枢轴连接多个使用嵌套循环。复制user_id
EN

Stack Overflow用户
提问于 2022-05-27 08:59:40
回答 1查看 116关注 0票数 0

这是我的问题-- user_id正在复制其他的user_id,没有使用嵌套循环进行应用或分离,我认为问题在我的user_id中--我将展示其他的照片,以具体描述我的问题。

当选择两个项目分配给单个user1时,它的工作效率很高。不是复制的,

就像这张照片:

但是当我试图分配不同的项目和用户时,它是在复制user1。没有附加在其他项目上的user2

与此相同,当im将单个项目分配给两个或多个用户时,它不只是附加用户1,用户2不工作。

这是我的刀片文件。我在使用name[]和project[]

代码语言:javascript
复制
 <form method="POST" class="mx-8 space-x-4" action="{{ route('home.create') }}">
                    @csrf
                    @method('POST')
                    <div class="flex space-x-4">
                    <div class="inline-block relative w-64 mb-2">
                        <label for="" class="mb-5 text-lg">Project</label>
                        <select  name="project[]" class="p-2 block appearance-none bg-white border border-gray-400 hover:border-gray-500 px-4 py-2 pr-8 rounded shadow leading-tight focus:outline-none focus:shadow-outline">
                          @foreach ($projects as $project)
                          <option value="{{ $project->id }}">{{ $project->name }}</option>
                          @endforeach
                    </select>
                    </div>
                    <div class="inline-block relative w-64 mb-2">
                        <label for="" class="mb-5 text-lg">Name</label>
                        <select name="user[]" class="p-2 block appearance-none bg-white border border-gray-400 hover:border-gray-500 px-4 py-2 pr-8 rounded shadow leading-tight focus:outline-none focus:shadow-outline">
                          @foreach ($users as $user)
                          <option value="{{ $user->id }}">{{ $user->name }}</option>
                          @endforeach
                    </select>
                    </div>
                    </div>
                    <div class="flex space-x-4">
                        <div class="inline-block relative w-64 mb-2">
                            <select  name="project[]" class="p-2 block appearance-none bg-white border border-gray-400 hover:border-gray-500 px-4 py-2 pr-8 rounded shadow leading-tight focus:outline-none focus:shadow-outline">
                              @foreach ($projects as $project)
                              <option value="{{ $project->id }}">{{ $project->name }}</option>
                              @endforeach
                        </select>
                        </div>
                        <div class="inline-block relative w-64 mb-2">
                            <select name="user[]" class="p-2 block appearance-none bg-white border border-gray-400 hover:border-gray-500 px-4 py-2 pr-8 rounded shadow leading-tight focus:outline-none focus:shadow-outline">
                              @foreach ($users as $user)
                              <option value="{{ $user->id }}">{{ $user->name }}</option>
                              @endforeach
                        </select>
                        </div>
                        </div>
                 <button type="submit" class="bg-green-300 border border-gray-300 p-3">Submit</button>
   </form>

这是我的模型项目

代码语言:javascript
复制
class Project extends Model
{
    use HasFactory;

    protected $fillable = ['name'];

    public function users(){
        return $this->belongsToMany(User::class);
    }
} 

这是我的迁移project_user

代码语言:javascript
复制
   public function up()
    {
        if (!Schema::hasTable('project_user')) {
        Schema::create('project_user', function (Blueprint $table) {
           $table->foreignId('project_id')->constrained()->onDelete();
           $table->foreignId('user_id')->constrained()->onDelete();
        });

        };
    }

这是我的ProjectController,我认为我的代码在让嵌套附加到我的枢轴表上是错误的,这就是为什么当我试图将其他user_id分配给其他项目或复制它的时候

代码语言:javascript
复制
public function create(Request $request)
{
    foreach($request->input('project') as $project){
        $list=[];
        $projects = Project::find($project);
        foreach($request->input('user') as $user){
         $users = User::find($user);
         $list[$projects->id] = ['user_id'=>$users->id];
        }
     $projects->users()->attach($list);        
    return redirect()->back()->with('success','Successful created!');
}

请帮我解决这个问题,我试过很多次了,但还是解决不了

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-27 11:14:15

问题在于创建方法。通过表单发送两个数组。要知道必须将哪个用户添加到项目中,必须参考数组的索引,以便将usersi的用户分配给projectsi项目。

另一个错误是,附件方法必须在模型对象上使用,您可以传递给它一个id或一个id数组。但是,您正试图将关联数组project_id => user_id附加到项目。

我还重命名了一些变量,以更好地适应它们所代表的内容。

代码语言:javascript
复制
public function create(Request $request)
{
    foreach($request->input('project') as $index => $project_id){
        $project = Project::find($project_id);
        $project->users()->attach($request->input('user')[$index]);     
     }    

    return redirect()->back()->with('success','Successful created!');
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72402949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档