Besoin d'aide ?

Problème de class

  • Avatar de ThorOddin'sSon
    Membre depuis :
    31/01/2018
    Messages :
    98

    Bonjour,

    Je reçois le message suivant : Object of class App\Models\Tracks could not be converted to int.

    En plus de pointé la ligne de mon code : if($day < 7){.

    public function index()
    {
    $day = Tracks::where('user_id', Auth::User()->id)->orderBy('created_at', 'asc')->addSelect('day')->first();
    //dd($day);

    if($day == 'null'){
    $workouts = userWorkouts::with('Exercise:id,name')->where('user_id', Auth::User()->id)->where('current', 'now')->where('day', 1)->where('sequence', 1)->get();
    //dd($workouts);

    return view('workout.track', compact('workouts'));
    }else{
    if($day < 7){
    $today = $day + 1;
    $workouts = userWorkouts::with('Exercise:id,name')->where('user_id', Auth::User()->id)->where('current', 'now')->where('day', $today)->where('sequence', 1)->get();

    return view('workout.track', compact('workouts'));
    }elseif($day == 7){
    $workouts = userWorkouts::with('Exercise:id,name')->where('user_id', Auth::User()->id)->where('current', 'now')->where('day', 1)->where('sequence', 1)->get();

    return view('workout.track', compact('workouts'));
    }
    }
    }

    Voici mon modèle Tracks :

    <?php

    namespace App\Models;

    use Illuminate\Database\Eloquent\Model;

    class Tracks extends Model
    {
    protected $fillable = [
    'program_id', 'day', 'sequence', 'exercise_id', 'serie', 'reps', 'charge', 'heartbeat', 'calories', 'duration', 'rest', 'user_id',
    ];

    function program(){
    return $this->belongsTo(Programs::class);
    }

    function exercise(){
    return $this->belongsTo(Exercises::class);
    }
    }

    Je comprends pas pourquoi sa ne fonctionne pas pour passer à une autre journée d'entraînement.

  • Avatar de Farris27
    Membre depuis :
    31/10/2017
    Messages :
    66

    ça donne quoi ton dd($day)? :)

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2285

    Salut,

    Ta variable $day contient une collection, la comparer à un nombre n'a aucun sens. Je suppose que c'est un attribut dans cette collection qui est concerné...

  • Avatar de ThorOddin'sSon
    Membre depuis :
    31/01/2018
    Messages :
    98

    Voilà mon dd(day) :

    Tracks {#417 ▼
    #fillable: array:12 [▼
    0 => "program_id"
    1 => "day"
    2 => "sequence"
    3 => "exercise_id"
    4 => "serie"
    5 => "reps"
    6 => "charge"
    7 => "heartbeat"
    8 => "calories"
    9 => "duration"
    10 => "rest"
    11 => "user_id"
    ]
    #connection: "mysql"
    #table: null
    #primaryKey: "id"
    #keyType: "int"
    +incrementing: true
    #with: []
    #withCount: []
    #perPage: 15
    +exists: true
    +wasRecentlyCreated: false
    #attributes: array:1 [▼
    "day" => 1
    ]
    #original: array:1 [▼
    "day" => 1
    ]
    #changes: []
    #casts: []
    #dates: []
    #dateFormat: null
    #appends: []
    #dispatchesEvents: []
    #observables: []
    #relations: []
    #touches: []
    +timestamps: true
    #hidden: []
    #visible: []
    #guarded: array:1 [▼
    0 => "*"
    ]
    }
  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2285

    Alors c'est plutôt ça que tu veux :

    if($day->day < 7){
  • Avatar de ThorOddin'sSon
    Membre depuis :
    31/01/2018
    Messages :
    98

    Ok! La dernière fois que j'avais essayé, il me donnait un message d'erreur et là, en utilisant $day->day le problème se résout.

    Merci!

Vous ne pouvez pas répondre à ce sujet.