【问题标题】:i am trying to rate user but user only able to rate himself我正在尝试评价用户,但用户只能评价自己
【发布时间】:2020-04-23 03:14:10
【问题描述】:

我的用户表user1和user2中有两个用户 user2 想要评价 user1 我创建了一个评级表 就像

 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 store 函数内部代码如下

 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 并且 rating_user_id 也给出了用户给出评分的 id 但用户只能评价自己而不是其他用户..

【问题讨论】:

标签: laravel


【解决方案1】:

db 中的图像是正确的,RatingsController 中的 store 方法也可以正常工作。

因此,您希望我们为您提供 ProfileController 方法的代码示例,以获取用户提供的评分并提供给用户。


1) 您必须向 User 模型添加以下关系:

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'
    )
  );
}

附:这只是一个示例,请将我的示例改编为您自己的项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    相关资源
    最近更新 更多