首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在尝试向用户添加评级,并运行到对null上的成员函数Review()的错误调用。在laravel 5.8中

我正在尝试向用户添加评级,并运行到对null上的成员函数Review()的错误调用。在laravel 5.8中
EN

Stack Overflow用户
提问于 2020-04-22 15:16:44
回答 1查看 45关注 0票数 1

我正在尝试向用户添加评分和评论,到目前为止,我已经做了一个单独的控制器用于评论,在该控制器的store方法中,我的代码如下所示

代码语言:javascript
复制
public function store(Request $request,User $user)
   {
       //
       $up=User::find($user->id);
       if($request->review)
       {
           $up->Review()->attach($request->review);
       }
     if($request->rating)
     {
         $up->Review()->attach($request->rating);
     }
       return redirect()->back();

   }

我也为审查创建了一个单独的模型,其中我的代码如下所示

代码语言:javascript
复制
class Review extends Model
{
    //
    protected $fillable=['rating','review'];
    Public function User()
    {

        return $this->belongsToMany(User::class);
    }
}

在我的用户模型中,我做了什么

代码语言:javascript
复制
  Public function Review()
      {

          return $this->belongsToMany(Review::class);
      }

我的迁移看起来像这样

代码语言:javascript
复制
 public function up()
    {
        Schema::create('review_user', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('user_id');
            $table->string('rating');
            $table->string('review');
            $table->timestamps();
        });
    }

我的表单如下所示

代码语言:javascript
复制
<form action="{{route('ReviewsUser',$user->id)}}" method="POST">
                    @csrf
                    @method('PUT')




                            <div class="feedback-yes-no">
                                <strong>Your Rating</strong>
                                <div class="leave-rating">
                                    <input type="radio" name="rating" id="rating-1" value="1" checked/>
                                    <label for="rating-1" class="icon-material-outline-star"></label>
                                    <input type="radio" name="rating" id="rating-2" value="2"/>
                                    <label for="rating-2" class="icon-material-outline-star"></label>
                                    <input type="radio" name="rating" id="rating-3" value="3"/>
                                    <label for="rating-3" class="icon-material-outline-star"></label>
                                    <input type="radio" name="rating" id="rating-4" value="4"/>
                                    <label for="rating-4" class="icon-material-outline-star"></label>
                                    <input type="radio" name="rating" id="rating-5" value="5"/>
                                    <label for="rating-5" class="icon-material-outline-star"></label>
                                </div><div class="clearfix"></div>
                            </div>

                            <textarea class="with-border" placeholder="Enter Your Comments" name="review" id="review" cols="7" required></textarea>



                        <!-- Button -->
                        <button class="button full-width button-sliding-icon ripple-effect" type="submit" >Your Review's <i class="icon-material-outline-arrow-right-alt"></i></button>
                    </form>

我正在尝试做的是存储其他用户给用户的评论,任何人谁可以帮助我克服这个错误将非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2020-04-22 16:00:40

代码语言:javascript
复制
Call to a member function Review() on null 

此错误意味着调用成员函数Review()的变量$up具有空值。这意味着它不会在

$up = User::find($user->id);

您的post路由没有传递用户ID来查找用户的路由参数。

因此,改变这一点

代码语言:javascript
复制
Route::post('Reviews','ReviewsController@store')->name('ReviewsUser');

到这个

代码语言:javascript
复制
Route::post('Reviews/{user}','ReviewsController@store')->name('ReviewsUser');

现在将通过User $user捕获控制器中的用户ID

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61359323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档