首页 文章

Laravel - 调用未定义的方法Illuminate \ Database \ Query \ Builder :: user()

提问于
浏览
4

我正忙着Laravel From Scratch: Updating Records and Eager Loading . 我跟着tut但是在尝试在CardsController中添加用户数据时遇到此错误 . 我假设我已经观看了3次视频,而我对User,Card&Note的数据库查询与视频完全匹配 .

在通过迁移创建Users表之后,我需要执行另一个步骤吗?

Error

BadMethodCallException in Builder.php line 2345:

调用未定义的方法Illuminate \ Database \ Query \ Builder :: user()

CardsController code

<?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'));
    }
}

2 回答

  • 10

    您的 note 模型缺少与其相关联的 user 的关系定义,它看起来像 .

    您应该只能在 Notes 模型中添加关系,如下所示:

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

    该视频确实存在一些问题,因此我也遇到了同样的问题 . 您应该只能在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');
    }
    

    祝福你 !

相关问题