Привет, я застрял, пытаясь получить данные из базы данных на недели.
У меня есть следующая таблица (многие ко многим отношениям) < /p>
- Prontine: id, plan_id, user_id .
- Упражнение: ID, Имя, Описание, Изображение.
- examer_routine: id, rootine_id, genery_id, неделя, день.
Prontine < /p>
public function exercises() {
return $this->belongsToMany(Exercise::class)->withPivot('week', 'day', 'completed')->orderBy('week','asc');;
}
< /code>
Упражнение < /p>
public function routines() {
return $this->belongsToMany(Routine::class)->withPivot('week', 'day', 'completed');
}
< /code>
Я хотел бы получить все строки к неделе, как это. < /p>
Json example:
{
"week": [
1: {
"exercises": [
{
"name": "Abs"
}
]
},
2: {
...
}
]
}
< /code>
Я уже пробовал это < /p>
if(!empty($routine)) {
foreach ($routine->exercises as $exercise) {
$week = $exercise->pivot->week;
if($week == $previous_week) {
array_push($this->weeks, $exercise->pivot->week);
} else {
array_push($this->weeks, [
$exercise->pivot->week => $exercise->pivot->week
]);
}
$previous_week = $exercise->pivot->week;
}
// dd($this->weeks);
// return DB::table('exercise_routine')->where('routine_id',$routine->id)->max('week');
}
< /code>
Объяснение < /strong> < /p>
Таблица упражнения_routine имеет недельный номер для разделения упражнений по неделю .
Мне нужно создать массив, и если неделя составляет 1, то нажмите на массив 1, если следующий составляет 1, нажмите в одном и том же массиве. Если следующее 2 или другое, просто нажмите, но в номере 2. < /P>
Я не уверен, что вы понимаете, что я имею в виду, это просто пытается пройти путь Чтобы сделать это. < /p>
заранее спасибо. < /p>
Подробнее здесь: https://stackoverflow.com/questions/617 ... lationship