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

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

Контроллер сообщений:

public function show($id)
{
    $post = Post::find($id);
    $review = Review::all();

    return view('posts.show', compact('post', 'review'));      
    /** return view('posts.show')->with('post', $post); */
}

Сообщения. php:

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

Отзыв. php:

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

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

Ответы [ 2 ]

1 голос
/ 01 февраля 2020

Отзывы. php

protected $tables ="posts";
public function reviews()
{
    return $this->hasMany('App\Reviews', 'foreign_id', 'id_here');
}

PostsController

public function show($title)
{
    $post = Posts::where('title', '=', $title)->with('reviews')->first();
    return view('show.blade', compact('post'));
}
0 голосов
/ 01 февраля 2020

У вас есть ошибка в ваших отношениях, отметьте ссылку один ко многим В вашей почтовой модели:

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

В вашей обзорной модели:

protected $tables='reviews';
function post()
{
    return $this->belongsTo('App\Post', 'post_id', 'id');
}

И вы можете использовать eager-loading:

public function show($id)
{
    $post = Post::with('reviews')->find($id);

    return view('posts.show', compact('post'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...