dongshi9526 2018-07-11 10:40
浏览 272

在laravel 5.4中添加多个表格中多个表格的数据

I am trying to insert with two tables with many to many relationship: Assignments and Collectors. I also make a intermediate or pivot table between them named assignment_collector.

create.blade.php in assignment folder

<form method="POST" action="{{ route('assignments.store') }}"> 

        {{ csrf_field() }} 


        <div class="form-group">
            <label for="area_id">Area: </label>
            <select class="form-control" name="area_id">
                @foreach ($areas as $area)
                    <option value= "{{ $area->id }}">
                      {{ $area->campus }} {{ $area->building }} {{ $area->floor }}
                    </option>
                @endforeach
            </select>
        </div>

        <div class="form-group">
            <label for="mts_id">MTS: </label>
            <select class="form-control" name="mts_id">
                @foreach ($mts as $mt)
                    <option value= "{{ $mt->id }}">
                      {{ $mt->location }}
                    </option>
                @endforeach
            </select>
        </div>

        <div class="form-group">
         <input type="hidden" class="form-control" id="status" name= "status" value="Active">
        </div>

        <div class="form-group">
            <label for="collector_id">Collector: </label>
            <select class="form-control" name="collector_id">
                @foreach ($assignments as $assignment)
                    @foreach($assignment->collectors as $collector)
                          <option value= "{{ $collector->id }}">
                            {{ $collector->firstname }} {{ $collector->lastname }}
                          </option>
                    @endforeach

                @endforeach
            </select>
        </div>

        <div class="form-group">
            <button type="submit" class="btn btn-primary">Add</button>
        </div>

    </form>

AssignmentsController

public function store(Request $request)
{
    $this->validate($request, [
        'area_id' => 'required',
        'mts_id' => 'required',
        'status' => 'required',
        'collector_id' => 'required'
    ]);

    $assignment = new Assignment();
    $assignment->area_id = $request->area_id;
    $assignment->mts_id = $request->mts_id;
    $assignment->status = $request->status;
    $assignment->save();

    $assignment_collector = new AssignmentCollector();
    $assignment_collector->collector_id = $request->collector_id;
    $assignment_collector->assignment_id =  $assignment->id;
    $assignment_collector->save();


    return redirect('/assignments');
}

Assignment Model

public function collectors()
{
    return $this->belongsToMany(Collector::class);
}

Collector Model

public function assignments()
{
    return $this->belongsToMany(Assignment::class);
}

I got an error on this: App\AssignmentCollector since there is no AssignmentCollector and as I read the tutorials, you don't need to make a model for the pivot table. I reading the other articles but I get even more confused. Please help me because I'm still new in Laravel and I have get confused. Thanks!

  • 写回答

1条回答 默认 最新

  • duanjue9296 2018-07-11 10:50
    关注

    You don't need a Model for your assignment collector table. What you want to do is create the Assignment then assign

    $assignment->collectors()->create([
      // all the collector data
    ]);
    
    评论

报告相同问题?

悬赏问题

  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 qgcomp混合物线性模型分析的代码出现错误:Model aliasing occurred
  • ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答