web-dev-qa-db-ja.com

Laravel-未定義のメソッドIlluminate \ Database \ Query \ Builder :: user()の呼び出し

スクラッチからのLaravel:レコードの更新と熱心なロード で忙しい。私はタットに従いましたが、CardsControllerにユーザーデータを追加しようとするとこのエラーが発生します。どこかでカードユーザー関係のステップを見逃したと思いますが、ビデオを3回見ましたが、ユーザー、カード、メモのデータベースクエリはビデオと完全に一致しています。

おそらく移行によってユーザーテーブルを作成した後に実行する必要がある別のステップはありますか?

エラー

BadMethodCallException in Builder.php line 2345:

未定義のメソッドIlluminate\Database\Query\Builder :: user()の呼び出し

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'));
    }
}
6
Clinton Green

noteモデルには、関連付けられているuserの関係定義がありません。

次のようにNotesモデルにリレーションシップを追加できるはずです。

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

そのビデオにはいくつかの問題があるので、私も同じ問題に遭遇しました。次のように、Noteモデルに関係を追加することができるはずです。

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

そして、このようなユーザーモデルでは:

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

お大事に !

1
lightWay