Ошибка при отображении данных по идентификатору в базе данных - PullRequest
0 голосов
/ 07 апреля 2020

У меня проблема в том, что я не знаю точно, как ее решить, у меня есть страница, на которой отображаются некоторые вопросы, взятые из базы данных, и я сделал раздел комментариев, как я могу получить комментарии в соответствии с post_id? Я пытался взять их и нормально, но это не отображается, я сделал что-то вроде:

Маршрут ::

Route::get('/viewUserQuestion/{post}', 'PostsController@viewUserQuestion')->name('viewQuestion');

Контроллер:

 public function viewUserQuestion(Post $post, Comment $comment) { return view('viewQuestion', compact('post'), compact('comment'));

Только если я есть что-то вроде комментария [0] -> commentText будет показан мне, если я не получу сообщение об ошибке, предложение, как я могу принять их в соответствии с идентификатором?

Схема ::

        $table->id();
        $table->integer('post_id')->default();
        $table->integer('user_id');
        $table->text('commentText');
        $table->timestamps();
    });```

...

Ответы [ 2 ]

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

попробуйте

public function viewUserQuestion(Post $post) 
{ 
    $comment = Comment::where('post_id',$post->id)->get();
    return view('viewQuestion', compact('post','comment'));
}

Или измените маршрут на.

   Route::get('/viewUserQuestion/{post}/{comment}', 'PostsController@viewUserQuestion')->name('viewQuestion');

Чтобы использовать этот маршрут, вы также должны отправить комментарий id

Удачи

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

Во-первых, когда вы возвращаете свое представление, вы не передаете ему переменные правильно

return view(
    'viewQuestion', 
     compact('post'), 
     compact('comment')
);

Это будет передавать третий аргумент методу view() вместо того, чтобы иметь оба post & comment как часть одного массива. Я бы рекомендовал прочитать документацию в compact() здесь для лучшего понимания того, что он делает, но по сути он просто создает ассоциативный массив.

Вы бы хотели сделать что-то вроде это вместо этого:

return view('viewQuestion', [ 
     'post' => $post
]);

Если у вас есть Post модель с hasMany() отношением к вашей Comment модели

Почтовая модель

/**
 * A Post has many Comments.
 *
 * @return \Illuminate\Database\Eloquent\Relations\HasMany
 */
public function comments()
{
    return $this->hasMany(Comment::class, 'post_id');
}

Вы можете получить доступ ко всем комментариям, просто зайдя $post->comments

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