Laravel + добавить элемент в cookie и не включать в запрос - PullRequest
0 голосов
/ 02 июля 2018

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

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

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

Мой код:

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 - это массив с одним элементом (идентификатор не добавляется в массив)
  • Как я могу выбрать один случайный элемент из базы данных, который НЕ в массиве?

1 Ответ

0 голосов
/ 02 июля 2018

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

$random_idea = Idea::whereNotIn('id', $ideas)->inRandomOrder()->first();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...