Laravel + добавить элемент в cookie и не включать в запрос

Я пытаюсь сделать следующее:

При загрузке страницы:

Выберите случайную идею один из базы данных.

Мой код:

public function index()
{
    if (Cookie::get('ideas'))
    {
        $ideas = Cookie::get('ideas');
        $ideas = unserialize($ideas);
    }
    else
    {
        $ideas = array();
    }

    $random_idea = Idea::inRandomOrder()->first();
    $ideas[] = $random_idea->id;

    Cookie::queue('ideas', serialize($ideas));

    return view('app', compact('random_idea'));
}

Я проверяю, установлен ли уже cookie, если он установлен, добавьте случайную идею в cookie. Если нет, создайте новый массив и добавьте в него идентификатор.

Когда они нажимают кнопку на странице (через вызов ajax).

Мой код:

public function idea(Request $request)
{
    $ideas = Cookie::get('ideas');
    $ideas = unserialize($ideas);

    $random_idea = Idea::inRandomOrder()->first();
    $ideas[] = $random_idea->id;

    Cookie::queue('ideas', serialize($ideas));

    return response()->json($random_idea);
}

У меня 2 проблемы:

  • Переменная cookie - это массив с всегда одним элементом (id не добавляется в массив)
  • Как я могу выбрать один случайный элемент из базы данных, который является НЕТ в массиве?

Вы действительно должны изолировать вопросы от одной проблемы, но с вашей первой проблемой вы пытались сбросить $ideas после того, как вы десериализовали его?

Devon 02.07.2018 17:46
Стоит ли изучать 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 и хотите разрабатывать...
0
1
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

У вас есть массив идентификаторов, построитель запросов Laravel принимает массив с whereNotIn. Это запустит SQL WHERE id NOT IN (1, 2, etc):

$random_idea = Idea::whereNotIn('id', $ideas)->inRandomOrder()->first();

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