Laravel отношение один ко многим для моей системы - PullRequest
0 голосов
/ 02 февраля 2020

Я хочу вывести все отзывы на основе одного отеля моей системы. В настоящее время у меня есть система, которая отображает ВСЕ отзывы о каждом отеле. У меня есть следующий код

PostsController:

public function show($id)
 {
   $post = Post::find($id);
   $review = Review::all();
   return view('posts.show', compact('post', 'review')); 
 }

Posts. php:

    protected $tables='posts';
    function review()
      {
        return $this->hasMany('App\Review');
      }
     }

Review. php:

     protected $tables='reviews';
     function post()
       {
         return $this->hasMany('App\Post', 'posts_title', 'title');
       }

Я хочу вернуть подходящие отзывы для правильного отеля. Я хочу вернуть posts_title (основной столбец в таблице сообщений) и вернуть заголовок (столбец в таблице отзывов).

1 Ответ

0 голосов
/ 02 февраля 2020

Проверьте имя файла Posts.php В соответствии с вашей post функцией в Review Модель должна быть Post.php. Я не знаю, как выглядит ваша структура базы данных, но будет лучше, если вы будете использовать Laravel лучшие практики id для primary key и post_id для foreign key. Также я думаю, что отношение должно быть одно ко многим означает, что один пост имеет много отзывов, как это: Post.php

public function reviews(){
  return $this->hasMany('App\Review');
}

Review.php

public function post(){
  return $this->belongsTo('App\Post');
}

Тогда вы можете использовать его как

$post = Post::with('reviews')->whereId($id)->first();

Чтобы получить больше информации вы можете посетить https://laravel.com/docs/6.x/eloquent-relationships#one -в-многих

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