php - 我如何从laravel中的中间表(多对多关系)获取数据

标签 php mysql laravel many-to-many relationship

我想阅读培训师和类(class)表之间的中间表的内容,以便能够标记给定培训师的事件类(class)的复选框,我该怎么做?

在这里您可以查看培训师表 http://prntscr.com/nhcrl4

在这里您可以查看类(class)表 http://prntscr.com/nhcrvp

在这里您可以查看 course_trainer(中级)表 http://prntscr.com/nhcsek

我想过使用三元,你建议我吗?

非常感谢

这是表格

<div class="container">
  <div class="row">
    <div class="col-lg-12">
      <form class="form-group" action="{{route('trainers.update', $trainer->id)}}" method="post" enctype="multipart/form-data">
          @csrf
          @method('PUT')

          <div class="form-group">
            <label for="name">Nome</label>
            <input type="text" class="form-control" name="name" value="{{$trainer->name}}">
          </div>

          <div class="form-group">
            <label for="surname">Cognome</label>
            <input type="text" class="form-control" name="surname" value="{{$trainer->surname}}">
          </div>

          <div class="form-group">
            <label for="description">Descrizione</label>
            <textarea class="form-control" name="description" rows="8" cols="80">{!! $trainer->description !!}</textarea>
          </div>

          @foreach ($courses as $course)
            <div class="form-check form-check-inline mb-2">
              <input name="course_id[]" class="form-check-input" type="checkbox" value="{{$course->id}}">
              <label class="form-check-label" for="course_id">{{$course->name_course}}</label>
            </div>
          @endforeach

          <div class="form-group">
            <img src="{{asset('storage/'.$trainer->image)}}" alt="">
          </div>

          <div class="custom-file">
            <input type="file" class="custom-file-input" name="image">
            <label class="custom-file-label" for="image">Scegli un'immagine</label>
            <div class="invalid-feedback"><strong>N.B.</strong> dimensione consigliata 160px x 160px</div>
          </div>

          <div class="form-group">
            <input type="submit" class="form-control" value="MODIFICA ISTRUTTORE">
          </div>
        </form>
    </div>
  </div>
</div>

这是 Controller 中的编辑功能

public function edit($id)
    {
        $trainer = Trainer::find($id);
        $courses = Course::all();

        return view('trainers.edit', compact('trainer','courses'));
    }

这是 Controller 中的更新函数

    public function update(Request $request, Trainer $trainer)
    {
      $data = $request->all();

      $trainer->update($data);

      $trainer->courses()->sync($data['course_id']);

      return redirect()->route('trainers.admin');
    }

最佳答案

这是训练师模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Trainer extends Model
{
    protected $fillable = ['name','surname','description','image'];

    public function courses(){
      return $this->belongsToMany(Course::class)->withTimestamps();
    }

}

这是类(class)模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Course extends Model
{
  protected $fillable = ['name_course','description_course','logo_course'];


  public function trainers(){
    return $this->belongsToMany(Trainer::class)->withTimestamps();
  }
}

关于php - 我如何从laravel中的中间表(多对多关系)获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55873993/

相关文章:

php - 拉维尔 4.2 : Slow queries when using an external MySQL server

php - 带连接的 Laravel 查询,多个表中的名称相同

php - 使用 Facebook PHP SDK 获取 Facebook 广告内容

php - 使用 Composer 时我要上传什么?

php - 单击下载按钮时,如何将 MySQL 数据库中的值保存到 .txt 文件中?

java内存不足异常(jdbc)

php - 有什么方法可以检查匿名函数吗?

php - 在数据库查询后从 "$result"资源中删除列

mysql - 如何编写连接 3 个表的查询

caching - Laravel 缓存 Eloquent