首页 > 解决方案 > Laravel 8:调用数组上的成员函数 user()

问题描述

我正在使用 Laravel 8 开发我的论坛项目,我想为用户在论坛上提出的问题添加一些类似的功能。

所以这里有一个表格question.blade.php

<form action="{{ route('questions.likes', $show->id) }}" method="POST">
   @csrf
   <button class="btn">
      <i class="fas fa-thumbs-up"></i> <span>{{ $show->likes->count() }}</span>
   </button>
</form> 

然后在LikeController,我添加了这个:

public function store(Question $id, Request $request)
    {
        $id->likes()->create([
            'user_id' => $_REQUEST->user()->id,
        ]);

        return back();
    }

但现在我得到这个错误:

Call to a member function user() on array 

这是指这一行:

'user_id' => $_REQUEST->user()->id,

那么这里出了什么问题呢?我需要传递按下like 按钮的用户ID 以更新likes表。我该如何解决这个问题?

如果您与我分享任何想法或建议,我将不胜感激...

提前致谢。

标签: phplaravellaravel-8

解决方案


代替 'user_id' => $_REQUEST->user()->id;

'user_id' => $request->user();

编辑:错误的原因

$_REQUEST是一个关联数组,默认包含 $_GET、$_POST 和 $_COOKIE 的内容。这属于 PHP 核心,不属于 Laravel。该数组与 laravel 对象没有联系,user()所以为什么 Call to a member function user() on array抛出。

$request 是lluminate\Http\Request 此对象的实例,可以访问当前经过身份验证的用户


推荐阅读