Maison  >  Questions et réponses  >  le corps du texte

Problèmes d'écriture de données dans les tables associées lorsque Laravel utilise des classes DB

Le problème de l'écriture de données dans la table associée lorsque laravel utilise la classe DB :

Lorsque vous utilisez la façade, vous devez définir un rôle pour l'utilisateur actuel. Vous pouvez utiliser $user->roles()->attach(1); comme indiqué ci-dessous :

.
    public function run()
    {
        $user=User::create([
            'name' => 'xiaoming',
            'email' => 'xiaoming@example.com',
            'password' => bcrypt('secret'),
            
        ]);
        $user->roles()->attach(1);
    }

Problème :
Nous devons maintenant utiliser la classe DB pour compléter les fonctions ci-dessus. Le code suivant $user->roles()->attach(1); ne peut pas être exécuté et
signalera une erreur :

.
  [Symfony\Component\Debug\Exception\FatalThrowableError]
  Call to a member function roles() on boolean

Comment dois-je l'écrire ?

    public function run()
    {
        $user=DB::table('users')->insert([
            'name' => 'xiaoming',
            'email' => 'xiaoming@example.com',
            'password' => bcrypt('secret'),
        ]);
        $user->roles()->attach(1);
    }
迷茫迷茫2736 Il y a quelques jours371

répondre à tous(1)je répondrai

  • 黄舟

    黄舟2017-05-16 16:49:37

    Lors de l'utilisation de DB, une valeur booléenne est renvoyée :

    $user=DB::table('users')->insert([
                'name' => 'xiaoming',
                'email' => 'xiaoming@example.com',
                'password' => bcrypt('secret'),
            ]);
    $user->roles()->attach(1);

    $user est une valeur booléenne.

    répondre
    0
  • Annulerrépondre