Как мне оставлять комментарии под постами в Laravel? - PullRequest
1 голос
/ 09 февраля 2020

У меня есть метод, который добавляет комментарии в базу данных. Для каждого поста свой комментарий. Моя блейд-страница с формой имеет скрытый ввод, от которого я беру идентификационный пост

<input type="hidden" value="{{ $post->post_id }}" name="post_id">

Мой метод

public function store(Request $request)
{
    $comment = new Music_comment();
    $comment->comment = $request->comment;
    $comment->author_id = \Auth::user()->id;
    $comment->post_id = (int)$request->input('post_id');

    $comment->save();

    return redirect()->back()->with('success', 'Комментарий добавлен');    
}

Но я не могу получить комментарии под постом, это необходимо что под каждым сообщением отображается определенный комментарий, соответствующий идентификатору записи. Мой взгляд composer метод:

View::composer('*', function($music) {
        $music->with(['post_comment' => Music_comment::orderBy('created_at', 'desc')->limit(4)->get()]);
    });

Ответы [ 2 ]

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

просто вы можете справиться с laravel красноречивыми отношениями.
1) Добавьте эту функцию на вашу модель Musi c.

public function comments() {
        return $this->hasMany(Comment::class, 'id', 'post_id');
       //here id is parent id, post_id is child id which is in comments table
    }

2) получите доступ ко всем вашим комментариям, используя этот код на laravel blade / on Ваш контроллер * функционирует напрямую

 $comments =  $music->comments(); 

Или,

$comments =  $music->comments()->orderBy('created_at', 'desc')->limit(4)->get()

для руководства по отношениям один-ко-многим, нажмите эту ссылку

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

Если вы хотите показать модель отношения на Music_comment Модель, а также на Post Было бы неплохо. Предположим, что у вас правильно определены отношения, вы можете сделать это следующим образом.

View::composer('*', function($music) {
        $music->with(['post.comment' => function($query){
                $query->orderBy('created_at', 'desc')->limit(4);
        };
    });

Надеюсь, это поможет.

PS

Если вы хотите восстановить идентификатор аутентифицированного пользователя. Вы можете сделать это Auth::id()

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