我想给用户评分,但用户只能给自己评分。

Inside my rating table where user_id=2 is the id who is giving the review 在我的用户表中有两个用户,用户1和用户2用户2想对用户1进行评价我创建了一个评价表,其内容为

 Schema::create('ratings', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('user_id');
            $table->string('rating')->nullable();
            $table->string('review')->nullable();
            $table->integer('rated_user_id');
            $table->timestamps();
        });

我还创建了一个名为Rating的模型,并定义了一个与用户的关系,如

public function user()
{
    return$this->hasMany(User::class);
}

我的用户模型中的代码如下

 public function Rating()
      {
          return $this->hasOne(Rating::class);
      }

Ratingcontroller商店功能的代码如下所示

 public function store(Request $request)
    {
        //
        $rating = new Rating;
        $rating->fill($request->all());
        $rating->user_id = Auth::id();
        $rating->save();
       return redirect()->back();
    }

问题是在评分表中,所有的东西看起来都很好,user_id得到的是试图发布评论的id, rated_user_id给出的是该用户的id,但该用户只能给自己评分,而不能给其他用户评分。

解决方案:

db中的图像是正确的,而你的 store 方法中 RatingsController 也能如期工作。

所以,你想从我们这里得到的代码示例是 ProfileController 方法来获取用户提供的评分和提供给用户的评分。

1) 你必须在 用户 模型以下关系。

public function ratingsProvidedByMe() 
{
  return $this->hasMany(Rating::class, 'user_id', 'id');
}

public function ratingsProvidedToMe()
{
  return $this->hasMany(Rating::class, 'rated_user_id', 'id')
}

2)在 评级 模式。

public function ratedBy()
{
  return $this->belongsTo(User::class, 'user_id');
}

public function ratedTo()
{
  return $this->belongsTo(User::class, 'rated_user_id');
}

3)在你的 ProfileController:

public function view(Request $request) 
{
  $ratingsProvidedByMe = 
    Rating::with('ratedTo')
             ->where('user_id', Auth::id())
             ->all();
  $ratingsProvidedToMe = 
    Rating::with('ratedBy')
             ->where('rated_user_id', Auth::id())
             ->all();

  $me = $user = Auth::user();

  return view(
    'profiles.view', 
    compact(
      'ratingsProvidedByMe', 
      'ratingsProvidedToMe', 
      'user', 'me'
    )
  );
}

P.S. It’s just an example, adapt my example to Your project Yourself.

本文来自投稿,不代表运维实战侠立场,如若转载,请注明出处:https://www.shizhanxia.com/717.html

(0)
上一篇 2022年6月29日 下午3:59
下一篇 2022年6月29日 下午3:59

相关推荐

发表评论

登录后才能评论