Сегодня я сделал систему комментариев, но она не завершена. В моей базе данных все поля заполнены датами, а user_id нет. Как я могу сохранить в столбце user_id идентификатор аутентифицированного пользователя? Вот мой код.
КомментарииКонтроллер:
public function store(Request $request, $post_id)
{
$this->validate($request, array(
'username' => 'required|max:255',
'mail' => 'required|mail|max:255',
'comment' => 'required|min:5|max:2000',
));
$post = Post::find($post_id);
$comment = new Comment();
$comment->username = $request->username;
$comment->email = $request->email;
$comment->comment = $request->comment;
$comment->approved = true;
$comment->post()->associate($post);
$comment->save();
Session::flash('message', "Message posted successfully!");
return Redirect::back();
}
Мой вид
<div class = "row">
<div id = "comment-form">
{{ Form::open(['route' => ['comments.store', $post->id], 'method' => 'POST']) }}
<div class = "row">
<div class = "col-md-6">
{{ Form::label('username', "Username:") }}
{{ Form::text('username', null, ['class' => 'form-control']) }}
</div>
<div class = "col-md-6">
{{ Form::label('email', "Email:") }}
{{ Form::text('email', null, ['class' => 'form-control']) }}
</div>
<div class = "col-md-6">
{{ Form::label('comment', "Comment:") }}
{{ Form::text('comment', null, ['class' => 'form-control']) }}
</div>
{{ Form::submit('Add Comment', ['class' => 'btn btn-success btn-xs']) }}
</div>
{{ Form::close() }}
</div>
Мой маршрут
Route::post('comments/{post_id}', ['uses' => 'CommentsController@store', 'as' => 'comments.store']);
Я пытался вставить Auth::user()->id в форму, но не получилось...
Просто добавьте значение user_id, если это то, что вы хотите добавить?
Спасибо :) так просто, я совсем забыл об этой строчке...
спасибо. Итак, теперь я могу получить только 2 последние записи от $comment->$comment?
Конечно, просто ...->orderBy('created_at')->limit(2)






Чтобы получить аутентифицированного пользователя, вы должны использовать только фасад Auth. Ниже я покажу, как его использовать.
use Illuminate\Support\Facades\Auth;
$user = Auth::user(); // Get the currently authenticated user...
$user_id = Auth::id(); // Get the currently authenticated user's ID...
Таким образом, чтобы сохранить пользователя, связанного с комментарием, у вас есть два варианта:
$user_id = Auth::id();
$comment->user_id = $user;
$comment->save();
Или
$user = Auth::user();
$comment->user = $user;
$comment->save();
Если у вас есть дополнительные вопросы об аутентификации Laravel, посмотрите https://laravel.com/docs/5.8/authentication#retrieving-the-authenticated-user.
спасибо. Итак, теперь я могу получить только 2 последние записи от $comment->$comment?
Что бы вы хотели получить? Последние два комментария?
Да, я хочу показать в своем индексе только последние 2 записи из комментариев с кнопкой просмотра всех комментариев :)
Хорошо, вы можете попробовать что-то вроде этого: `Comment::orderBy('created_at', 'desc')->limit(2)->get();
Есть ли в таблице
commentsстолбецuser_id, в который вы пытаетесь вставить? (Тогда вам, вероятно, не нужно имя пользователя)