Поле 'user_id' пусто

Сегодня я сделал систему комментариев, но она не завершена. В моей базе данных все поля заполнены датами, а 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 в форму, но не получилось...

Есть ли в таблице comments столбец user_id, в который вы пытаетесь вставить? (Тогда вам, вероятно, не нужно имя пользователя)

Qirel 14.07.2019 22:16

Просто добавьте значение user_id, если это то, что вы хотите добавить?

Qirel 14.07.2019 22:16

Спасибо :) так просто, я совсем забыл об этой строчке...

Andrei Nagy 14.07.2019 22:19

спасибо. Итак, теперь я могу получить только 2 последние записи от $comment->$comment?

Andrei Nagy 14.07.2019 22:51

Конечно, просто ...->orderBy('created_at')->limit(2)

Qirel 15.07.2019 06:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
5
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы получить аутентифицированного пользователя, вы должны использовать только фасад 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?

Andrei Nagy 14.07.2019 22:42

Что бы вы хотели получить? Последние два комментария?

Vinícius Alonso 15.07.2019 21:31

Да, я хочу показать в своем индексе только последние 2 записи из комментариев с кнопкой просмотра всех комментариев :)

Andrei Nagy 15.07.2019 21:41

Хорошо, вы можете попробовать что-то вроде этого: `Comment::orderBy('created_at', 'desc')->limit(2)->get();

Vinícius Alonso 16.07.2019 15:48

Другие вопросы по теме