Вопрос
Я создаю страницу, на которой пользователь может установить свою готовность к сменам в расписании.
Моя идея состояла в том, чтобы сделать 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();
}