laravel 中多对多关系的查询

问题描述 投票:0回答:1

我在两个表classessubjects之间有关系 classes, subjects table classe_subjects table

index blade screenshot

- ClassController:

public function index()
    {
        $classes = ClassSubject::join('classes as c', 'class', 'c.id')
            ->join('subjects as s', 'subject', 's.id')
            ->select(
                'c.*',
                's.name as s_name',
                's.code as s_code'
            )
            ->get();
//        dd($classes);
        return view('classes.index')->with('classes', $classes);
    }
- classes/index blade:
<table class="table table-striped table-responsive">
  <thead class="table-bordered">
    <tr>
       <th>Nom</th>
       <th>Matieres</th>
       <th>Nombre des etudiants</th>
       <th>Actions</th>
     </tr>
  </thead>
  <tbody>
  @foreach($classes as $class)
    <tr>
       <td>{{ $class->name }}</td>
       <td>
          <span class="border border-secondary border-radius bg-secondary-light p-1">AR</span>
           <span class="border border-secondary border-radius bg-secondary-light p-1">IR</span>
           <span class="border border-secondary border-radius bg-secondary-light p-1">Math</span>
           <span class="border border-secondary border-radius bg-secondary-light p-1">SN</span>
           <span class="border border-secondary border-radius bg-secondary-light p-1">IC</span>
           <span class="border border-secondary border-radius bg-secondary-light p-1">HG</span>
           <span class="border border-secondary border-radius bg-secondary-light p-1">FR</span>
       </td>
       <td>
           <span class="border border-secondary border-radius bg-secondary-light p-1">50</span>
       </td>
       <td>
            <a href=""><i class="bi bi-eye text-secondary"></i></a>
            <a href=""><i class="bi bi-pencil-square text-primary"></i></a>
            <a href=""><i class="bi bi-trash text-danger"></i></a>
       </td>
  </tr>
  @endforeach
  </tbody>
  </table>

我希望索引刀片中的表格如下:

姓名 代码
1 AS 数学、SN、AR、FR
2 AS PH、SN、AR、IR
sql mysql laravel eloquent many-to-many
1个回答
0
投票

在你的控制器中你应该得到这样的数据

$classes = [
[
    'name' => 'AS',
    'subjects' => ['Math', 'SN', 'AR', 'FR']
],
[
    'name' => 'AS',
    'subjects' => ['PH', 'SN', 'AR', 'IR']
]

];

你的刀片应该是这样的:

<table>
<thead>
    <tr>
        <th>Name</th>
        <th>Codes</th>
    </tr>
</thead>
<tbody>
    @foreach($classes as $class)
    <tr>
        <td>{{ $class['name'] }}</td>
        <td>
            @foreach($class['subjects'] as $subject)
            {{ $subject }}@if(!$loop->last), @endif
            @endforeach
        </td>
    </tr>
    @endforeach
</tbody>
© www.soinside.com 2019 - 2024. All rights reserved.