я пытаюсь оценить пользователя, но пользователь может оценить только себя - PullRequest
0 голосов
/ 22 апреля 2020

Inside my rating table where user_id=2 is the id who is giving the review В моей таблице пользователей есть два пользователя 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 выглядит следующим образом

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

проблема в том, что в таблице рейтинга все выглядит хорошо. User_id получает идентификатор, который пытается оставить комментарий, а rating_user_id дает идентификатор, которому пользователь также присваивает рейтинг, но пользователь Оценить себя могут только другие пользователи ..

1 Ответ

0 голосов
/ 22 апреля 2020

Изображение в дБ правильное, и ваш 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'
    )
  );
}

PS Это всего лишь пример, адаптируйте мой пример под Ваш проект самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...