【问题标题】:BadMethodCallException Call to undefined method App\Models\User::id()BadMethodCallException 调用未定义的方法 App\Models\User::id()
【发布时间】:2021-03-19 20:13:00
【问题描述】:

我不久前开始使用 Laravel/Eloquent。来自 Java/Hibernate,但从未精通。尝试开辟新方法。现在使用最新版本的 Laravel 8。 AFAIK,在 java hibernate 中,您可以在 Model 中声明 id 属性,通过 Hibernate 注释将其链接到 DB builder,并且,当您部署应用程序时,它会创建一堆表和限制,例如 PK、FK、UNIQUE 等(保留它简单的愚蠢)。

但我认为不是在 Laravel 中。 我收到这个错误

来自artisan创建的用户模型,但稍微修改了一些随机属性,但内部没有静态函数id()@

这个,播种机

我猜,这家工厂有麻烦了,在 $vend->id 和 $comp->id 中。 卖家和买家扩展用户。 所有用户都可以是卖家和买家,但不能自己购买

我失去了什么?如何静态调用实例化对象的属性?我应该实现像return self::id 这样的静态函数吗?但在种子表中没有id!!!!那我应该在我的模型里面放一个 id 属性吗?

对不起,如果这听起来很愚蠢,所以我也是新手。 提前致谢

【问题讨论】:

  • 你确实需要在你的模型中放置一个静态方法,但是你想用这个 id() 方法做什么
  • 我不确定我想用它做什么,它只是声称,但我没有生成呼叫。它由 Eloquent 自动加载。
  • 在播种器中看不到任何可能引发异常的行。浏览工厂并检查您是否在这些工厂中对 id() 方法有任何引用。
  • 尝试在此处发布代码而不是图片,但在这个问题中,代码是否在图片中或在此处发布并不重要
  • $vend=Seller::has('products')->get()->random(); $vend 是卖方记录。所以在下一个语句中 $vendor->id->random() 没有意义。 $vendor->id 是单个值,没有随机方法。此外,除了收集方法外,还应使用键、值来定义。 Comp=User::all()->except('id', $vend->id)。仍然找不到会在用户上为id() 引发错误的行

标签: laravel eloquent


【解决方案1】:

据我了解,您希望使用 laravel eloquent 获得具有 Id X 的用户。

你快到了。 Laravel eloquent 为您提供了内置功能,例如,如果您想使用 Id = 5 获取用户,您可以这样做:

$user = App\Models\User::find(5);

根据 id 查找过滤器,或者您可以创建一个普通的查询语句,例如:

$user = App\Models\User::where('id','=',5)->first();

如果您想在用户模型中使用不同的列,例如您自己添加的列,第二个选项最适合您。

【讨论】:

  • 不,我现在不想使用 find(),只是用 faker 播种表,但错误抛出
  • @VidalM。你能发布你正在尝试的种子代码吗
  • 是的,请发布您的代码,这样可以清除问题。为此编辑您的问题。
  • 也许是 pluck('id')??不要这么认为,它与用户无关
  • 播种机重新加载。我的错误复制行^_^但没有找到q问题的解决方案
猜你喜欢
  • 2021-06-24
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 2021-06-21
  • 2023-02-06
  • 2020-12-29
  • 2022-01-26
  • 1970-01-01
相关资源
最近更新 更多