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 ?
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();