Отображение результатов в виде одной строки - PullRequest
0 голосов
/ 24 марта 2020

Я застрял. Самый простой способ описать мою проблему - загрузить скриншот;)

Отсутствия - index.blade. php

Я внедряю систему отсутствий. Эти красные значки отображаются, когда ученик отсутствовал, и серый, когда ученик присутствовал.

Я хочу отобразить эти три строки как одну строку, потому что они имеют одно и то же поле create_at, но должны быть честно, я понятия не имею, как это сделать. Поэтому помогите мне, если можете, конечно:)

Это мой исходный код:

(CreateAbsencesTable. php)

    public function up()
{
    Schema::create('absences', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('student_id')->unsigned();
        $table->integer('teacher_id')->unsigned();
        $table->integer('lesson')->unsigned();
        $table->string('status');
        $table->string('comment')->nullable();
        $table->timestamps();
    });
}

(AbsenceController@index)

    /**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{
    if (auth()->user()->hasRole('student')) {
        $absences = Absence::orderBy('created_at')->where('student_id', auth()->user()->id)->get();

        // dd($absences);

        return view('absences.index', compact('absences'));
    }
}

(resources / views / absences / index.blade. php)

                    @role('student')
                    <table class="table table-borderless table-striped shadow-lg mb-5">
                        <thead>
                            <tr>
                                <th class="align-middle pl-3 w-25">{{ __('Date') }}</th>
                                <th class="align-middle pl-3">{{ __('Lesson') }}</th>
                            </tr>
                        </thead>
                        <tbody>
                            @foreach ($absences as $absence)
                                <tr>
                                    <td class="align-middle pl-4 w-25">{{ $absence->created_at }}</td>
                                    <td class="align-middle pl-4">
                                        @for ($i = 1; $i <= 8; $i++)
                                            @if ($i == $absence->lesson)
                                                <span class="badge badge-pill badge-danger my-second-badge">
                                                    {{ $i }}
                                                </span>
                                            @else
                                                <span class="badge badge-pill badge-secondary my-second-badge">
                                                    {{ $i }}
                                                </span>
                                            @endif
                                        @endfor
                                    </td>
                                </tr>
                            @endforeach
                        </tbody>
                    </table>
                @endrole

Спасибо за помощь. Хорошего дня!

1 Ответ

0 голосов
/ 24 марта 2020

Первый в контроллере в действии index() вам нужно сгруппировать $ пропуски по created_at

public function index()
{
    if (auth()->user()->hasRole('student')) {
        return view('absences.index', [
            'absences' => Absence::orderBy('created_at')->where('student_id', auth()->user()->id)->get()->groupBy('created_at')
        ]);
    }
}

после в лезвии. php запуск по $absences

<tbody>
@foreach ($absences as $date => $absence)
    <tr>
        <td class="align-middle pl-4 w-25">{{ $date }}</td>
        <td class="align-middle pl-4">
            @for ($i = 1; $i <= 8; $i++)
                @if ($absence->contains($id))
                    <span class="badge badge-pill badge-danger my-second-badge">
                                                    {{ $i }}
                                                </span>
                @else
                    <span class="badge badge-pill badge-secondary my-second-badge">
                                                    {{ $i }}
                                                </span>
                @endif
            @endfor
        </td>
    </tr>
@endforeach
</tbody>
...