【问题标题】:Laravel - Call to undefined method Illuminate\Database\Query\Builder::user()Laravel - 调用未定义的方法 Illuminate\Database\Query\Builder::user()
【发布时间】:2016-10-22 09:04:59
【问题描述】:

我正忙于Laravel From Scratch: Updating Records and Eager Loading。我遵循了 tut,但在尝试在 CardsController 中添加用户数据时出现此错误。我假设我在某处错过了卡用户关系中的一步,但我已经观看了 3 次视频,并且我对用户、卡和便笺的数据库查询与视频完全匹配。

也许在通过迁移创建用户表之后我还需要执行另一个步骤吗?

错误

BadMethodCallException in Builder.php line 2345:

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

卡片控制器代码

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

【问题讨论】:

    标签: php sqlite laravel


    【解决方案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');
    }
    

    祝福你!

    【讨论】:

    • 看起来您只需在 User 模型中将 belongsTo 切换为 hasMany 类型的关系。提供或通过 PHP 更改字符串类无效:在您的情况下,Note::class 等于 'App\Note'
    【解决方案2】:

    您的note 模型缺少关联user 的关系定义,看起来像。

    您应该可以像这样在Notes 模型中添加关系:

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

    【讨论】:

    • Ohgodwhy,我在调用用户模型方法时遇到了同样的错误。我该如何解决?
    • @user2356198 考虑使用minimum, complete, verifiable example 提出一个新问题,您应该会得到很好的回应。
    • @Solivan 您应该提出一个问题,以便我们在那里进行审查,这已得到解答,您的情况可能更加独特。
    猜你喜欢
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2014-04-25
    • 2017-02-20
    • 2017-10-04
    • 2018-05-17
    • 2015-12-17
    相关资源
    最近更新 更多