【问题标题】:Laravel 8 - Property [xxx] does not exist on the Eloquent builder instance [duplicate]Laravel 8-Eloquent 构建器实例上不存在属性 [xxx] [重复]
【发布时间】:2020-10-29 15:57:21
【问题描述】:

我在这里向您展示“只是另一个错误”。 我没有找到任何好的来源来解释为什么会出现此错误。

所以,我有两个数据库表,它们是 withdrawsusers 我的表格效果理想,几乎完全符合我的要求,在withdraws 表中创建记录,但是.. 不会更改users 中的资金

表单中的 v-model 和 name 参数是“数量”,但让我向您展示我在该控制器代码中的功能 WithdrawController.php:

public function store(StoreRequest $request)
    {
        $data = $request->getData();

        try {
            DB::beginTransaction();

            $this->withdrawService->create($data);

            DB::commit();
        } catch (\Exception $e) {
            DB::rollBack();
            Log::error($e->getMessage());
            return redirect()->back();
        }
        $user = User::where('id', auth()->user()->id);
        $user->funds -= $data['amount'];
        $user->save();

        Mail::to('')->send(new WithdrawRequestMail($user, $data['amount']));

        return redirect()->back();
    }

【问题讨论】:

  • 我一直在 Stackoverflow 上看到这个查询的排列,我不知道为什么...User::where('id', auth()->user()->id)->first()User::find(auth()->user()->id) 等。我很好奇是否有链接;您是否从某处的教程中获得此代码?如果是,则应更新该教程以消除冗余。如果不是(你写的),那么这是对 auth() 助手如何工作的简单误解,并没有造成伤害:)

标签: php laravel eloquent laravel-8


【解决方案1】:

您已创建查询构建器,但尚未执行任何查询:

$user = User::where('id', auth()->user()->id);

然后您尝试使用$user,就像它是模型一样。您需要将first() 添加到您必须获取用户的内容中:

$user = User::where('id', auth()->user()->id)->first();

虽然您已经拥有来自 Auth 系统的用户:

$user = auth()->user();

【讨论】:

  • 谢谢!你的回答解决了我的问题。
猜你喜欢
  • 2021-07-25
  • 2022-01-15
  • 1970-01-01
  • 2020-08-02
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
相关资源
最近更新 更多