Bonjour,

J'ai en fait deux tables, la première table est appelée series avec 3 champs: id, name, fk_mark.
Ensuite, j'ai une seconde entité qui est nommée marks avec 2 champs id, name_mark.

Donc en gros, j'aimerais créer un système CRUD à travers mon SerieController, je suis bloqué à l'étape UPDATE.

Dans ma fonction edit , comment dois-je ajouter le model mark ? Car j'ai une foreign key liée.

public function edit($id)
    {

        $series = Serie::find($id);
        return view('admin.series.edit', compact('series'));
    }

Pareil pour la fonction update , j'ai besoin du model mark normalement étant donné que j'ai une clef étrangère ?

public function update(Request $request, $id)
    {
        $request->validate([
                'name' => 'required'
                /*'fk_mark' => 'required'*/
        ]);
        $series = Serie::find($id);
        $series->name = $request->get('name');
        /*$series->fk_mark = $request->get('fk_mark');*/
        $series->save();
        return redirect()->route('series.index')
                  ->with('success', 'updated successfully');
    }

Ce que je voudrai réaliser, c'est un système CRUD, lorsque l'utilisateur cliquera sur la rubrique serie, ensuite sur editer il y' aura 2 champs à modifier:
la première sera le field name (de la table serie donc).
le second champ sera la fk_mark (du name_mark de la table marks) en liste déroulante et l'utilisateur n'aura plus qu'à changer l'item. Mais avant de passer à la vue je dois savoir si je dois inclure mon model Mark dans le SerieController.

Je ne sais pas si c'est clair ?

1 réponse


Si tu as bien configuré tes belongsTo et hasMany (cf. la doc), ta Mark est accessible depuis ta Serie comme ça $maSerie->mark

Typiquement, ça devrait donner

class Serie extends Model {
      public function mark() {
           return $this->belongsTo('App\Mark', 'fk_mark');
       }
}

Si on considère qu'une même Mark peut être attribuée à n Serie.

EDIT : après relecture, je me rends compte que je réponds à côté ...
Si tu veux pouvoir afficher tes Mark dans ta vue, tu peux importer ton model use App\Mark;
Comme ça tu peux faire $marks = Mark::all();.
Tu peux aussi directement faire $marks = App\Mark::all();
Et dans ce cas sauvegarder ta serie en récupérant l'id de ta Mark depuis ta requête

$mark = Mark::find($request->get('mark_id'));
$serie->mark()->associate($mark);
$serie->save();