Нарушение ограничения целостности при использовании метода Laravel updateOrCreate ()

Я создаю систему голосования на моем текущем сайте Laravel, и есть проблема, которую я просто не понимаю при использовании метода Laravel updateOrCreate().

Вот что я пытаюсь сделать:

$vote = Vote::updateOrCreate(
    ['thread_id' => $id, 'user_id' => Auth::id()],
    ['type' => $request->type]
);

Есть ли голосование с тем, что thread_id и user_id обновляют свое поле type, используя значение $request->type. Если нет, создайте новую запись. В любом случае, я получаю сообщение об ошибке Integrity constrait violation: 1048: 'user_id' cannot be null

Я что-то не так делаю с этим методом?

Это моя миграция модели Vote:

Schema::create('votes', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('user_id')->unsigned();
    $table->integer('thread_id')->unsigned();
    $table->boolean('type');
    $table->timestamps();

    $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    $table->foreign('thread_id')->references('id')->on('threads')->onDelete('cascade');
});

Заранее спасибо и извините за мой плохой английский!

Вы уверены, что прошли аутентификацию во время вызова updateOrCreate?

jcalonso 10.12.2018 21:36

Да, это единственный способ попасть в режим голосования

enbermudas 10.12.2018 21:41

@jcalonso На самом деле Auth::id() возвращает null. Это странная причина, по которой я вошел в систему. Вид, в котором находятся мои кнопки «за» / «дау-голос», защищен промежуточным программным обеспечением auth.

enbermudas 10.12.2018 21:47

Что возвращает Auth::user()?

Namoshek 10.12.2018 21:49

Он возвращает нули, как и Auth::id().

enbermudas 10.12.2018 21:52

Я забыл кое-что важное, что могло вызвать эту проблему. Система голосов за / против реализована в компоненте Vue внутри resources/js/components. Я использую axios, чтобы опубликовать свой голос type, но ... Auth::user() должен работать внутри моего контроллера, не так ли?

enbermudas 10.12.2018 21:56

Думаю, это зависит от того, где проходит ваш маршрут. Это маршрут API?

Namoshek 10.12.2018 21:57

Да @Namoshek, axios работает с маршрутом API.

enbermudas 10.12.2018 21:57

Ну вот и все. Я должен использовать маршрут web.php, а не маршрут api.php. Большое спасибо вам обоим!

enbermudas 10.12.2018 21:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
9
82
0

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