web-dev-qa-db-fra.com

Laravel - Appel de la méthode non définie Illuminate\Database\Query\Builder :: user ()

Je suis occupé avec Laravel. From Scratch: Mise à jour des enregistrements et chargement rapide . J'ai suivi le tut mais j'obtiens cette erreur en essayant d'ajouter des données utilisateur dans CardsController. Je suppose que j'ai raté une étape dans la relation utilisateur de carte quelque part, mais j'ai visionné la vidéo 3 fois et mes requêtes de base de données pour User, Card & Note correspondent exactement à la vidéo.

Dois-je effectuer une autre étape après la création du tableau Utilisateurs via la migration?

Erreur

BadMethodCallException in Builder.php line 2345:

Appel de la méthode non définie Illuminate\Database\Query\Builder :: user ()

Code CardsController

<?php
namespace App\Http\Controllers;
use App\Card;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class CardsController extends Controller
{
    public function index()
    {
        $cards = Card::all();
        return view('cards.index', compact('cards'));
    }

    public function show(Card $card)
    {
        $card = Card::with('notes.user')->get();
        return $card;
        return view('cards.show', compact('card'));
    }
}
5
Clinton Green

Votre modèle note manque de la définition de la relation car il est associé à user.

Vous devriez juste pouvoir ajouter la relation dans le modèle Notes comme ceci:

public function user()
{
    return $this->belongsTo(User::class);
}
10
Ohgodwhy

Cette vidéo a quelques problèmes, donc j'ai aussi rencontré le même problème ... Vous devriez juste pouvoir ajouter la relation dans le modèle Note comme ceci:

public function user()
{
    //return $this->belongsTo(User::class);
    return $this->belongsTo('App\User');
}

et dans le modèle utilisateur comme ceci:

public function notes()
{
    return $this->hasMany(Note::class);
    //return $this->belongsTo('App\Note');
}

soyez bénis !

1
lightWay