mercredi 28 août 2019

Laravel get exercises by day from pivot table

I am trying to query a pivot table to show how many exercises have one day, but there is something wrong with that.

I need to get all the exercises by Monday or any day.

I have three tables: routines, exercises and exercise_routine.

routines     exercise_routine  exercise
--------     ----------------  --------
id           id                id
name         routine_id        name
description  exercise_id       description
user_id      week_day_id
             sets
             reps

I would like to get all the exercises by week_day_id, hope you understand my problem.

I tried these examples from other people on stackoverflow but it does not work.

Exercise::whereHas('routines', function($q) {
                $q->where('routines.week_day_id', 1);
            })
            ->get();

        return \DB::table('exercises')
            ->join('exercise_routine', 'exercise_routine.exercise_id', '=', 'exercises.id')
            ->where('exercise_routine', 1)
            ->get();

        dd( DB::table('exercises')
            ->where('exercises.id', '=', 1)
            ->select('exercises.id'));

// Routine Model

public function exercises() {
        return $this->belongsToMany('App\Models\Exercise');
    }

// ExerciseModel

public function routines() {
        return $this->belongsToMany('App\Models\Routine')->as('plan')->withPivot('sets', 'reps', 'week_day_id')->withTimestamps();
    }

// Controller
public function show(WeekDay $weekday) {
        Exercise::whereHas('routines', function($q, $weekday) {
                $q->where('routines.week_day_id', $weekday);
            })
            ->get();

    }

// api routes
Route::group(['prefix' => '/{weekday}/exercises'], function () {
        Route::get('/', 'WeekDayExerciseController@show')->middleware('auth:api');
    });

I expected to get all the exercises by Monday for example like this:

   {
        "id": 236,
        "name": "Upright Row (Barbell)",
        "description": "Description for Upright Row (Barbell)"
    },
    {
        "id": 237,
        "name": "Upright Row (Cable)",
        "description": "Description for Upright Row (Cable)"
    },
    {
        "id": 238,
        "name": "Upright Row (Dumbbell)",
        "description": "Description for Upright Row (Dumbbell)"
    },



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire