Создавайте новые коллекции в foreach l oop in laravel - PullRequest
0 голосов
/ 22 апреля 2020

Вопрос
Я создаю страницу, на которой пользователь может установить свою готовность к сменам в расписании.
Моя идея состояла в том, чтобы сделать foreach l oop со всеми датами в по расписанию, получая смены из коллекции, где дата - это дата из оберточной рамки l oop.

Когда я использую код, представленный ниже в представлении, первый l oop успешен. Следующие петли нет. Я подозреваю, что это потому, что он ищет сдвиги с новой датой, в коллекции, которая была создана в первом l oop.

Я не могу найти способ «сбросить» эту коллекцию в Laravel docs.

Кто-нибудь знает способ решить эту проблему?

Контроллер: AvailabilityabilitiesController. php

<?php

namespace App\Http\Controllers;

use App\Availability;
use App\Shift;
use App\User;

use Illuminate\Http\Request;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\Auth;

class AvailabilitiesController extends Controller {

public function index()
{
    $schedule = \App\Schedule::find(2);
    $user = \App\User::find(1);

    return view('availabilities.index', [
        'schedule' => \App\Schedule::find($schedule)->first(),  
        'schedule_list'     => \App\Schedule::all(),
        'shifts' => \App\Shift::where('schedule_id', $schedule->id)
    ]);
}

Просмотр: Index.blade. php

@foreach(getDatesInRange($schedule->start, $schedule->end) as $date)
    <p class="text-lg font-bold mb-4">{{ $date }}</p>

    @foreach($shifts->whereDate('start', '=', $date)->get() as $shift)
        <div class="mb-2">
            <p class="font-bold">{{ $shift->title }}</p>
            <p>{{ $shift->description }}</p>
            <p>{{ $shift->start }}</p>
            <p>{{ $shift->end }}</p>
        </div>
    @endforeach

@endforeach

Расписание моделей

public function shifts()
{
    return $this->hasMany(Shift::class);
}

Изменение модели

 public function availabilities()
 {
    return $this->belongsToMany(User::class, 'availabilities', 'shift_id', 
    'user_id')
        ->as('availability')
        ->withPivot('available')
        ->withTimestamps();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...