2 votes

Enregistrer des données dans un tableau croisé dynamique - Relation de nombreux à nombreux - Laravel

J'ai réussi à ajouter mes tables, y compris ma table pivot. Mes tables sont managers, categories et categories_manager (table pivot). Lorsque je sauvegarde des données depuis mon contrôleur de catégories, j'obtiens une erreur comme :

"SQLSTATE[42S02]: Table de base ou vue inexistante : 1146 Table 'system.category_manager' n'existe pas (SQL : insert into category_manager (category_id, created_at, updated_at, manager_id) values (2, 2017-10-09 13:39:12, 2017-10-09 13:39:12, 1))`

Je suis un débutant de toute façon

PS : j'ai déjà une liste d'utilisateurs enregistrés. De plus, même si j'obtiens l'erreur, les données sont enregistrées dans la table des catégories mais pas dans la table pivot

Modèle Manager

public function categories()
    {
        return $this->belongsToMany('App\Category')
        ->withTimestamps();
    }

Modèle Category

 public function managers()
    {
        return $this->belongsToMany('App\Manager')
        ->withTimestamps();
    }

Contrôleur de Catégories

public function store(CategoryFormRequest $request)
    {
        $user = User::find(1);
        $category = new Category(array(
            'category_name'  => $request->get('name'),
        ));

        $user->categories()->save($category);
        return redirect('/categories/create')->with('status','Catégorie créée avec succès');

    }

1voto

teeyo Points 2486

Laravel utilise la convention plutôt que la configuration ce qui signifie qu'en suivant des conventions simples, vous évitez des configurations compliquées.

Le nom de la table pivot doit être composé des noms au singulier des deux tables, séparés par le symbole de soulignement et ces noms doivent être disposés en ordre alphabétique.

Ainsi, le nom de votre table pivot devrait être category_manager mais vous avez dit que vous avez créé la table sous le nom de categories_manager

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X