我正在尝试向用户添加评分和评论,到目前为止,我已经做了一个单独的控制器用于评论,在该控制器的store方法中,我的代码如下所示
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();
}我也为审查创建了一个单独的模型,其中我的代码如下所示
class Review extends Model
{
//
protected $fillable=['rating','review'];
Public function User()
{
return $this->belongsToMany(User::class);
}
}在我的用户模型中,我做了什么
Public function Review()
{
return $this->belongsToMany(Review::class);
}我的迁移看起来像这样
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();
});
}我的表单如下所示
<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>我正在尝试做的是存储其他用户给用户的评论,任何人谁可以帮助我克服这个错误将非常感谢。
发布于 2020-04-22 16:00:40
Call to a member function Review() on null 此错误意味着调用成员函数Review()的变量$up具有空值。这意味着它不会在
$up = User::find($user->id);
您的post路由没有传递用户ID来查找用户的路由参数。
因此,改变这一点
Route::post('Reviews','ReviewsController@store')->name('ReviewsUser');到这个
Route::post('Reviews/{user}','ReviewsController@store')->name('ReviewsUser');现在将通过User $user捕获控制器中的用户ID
https://stackoverflow.com/questions/61359323
复制相似问题