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 中。如果没有,请创建新数组并将 id 添加到数组中。

当他们单击页面上的按钮(通过 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 不会添加到数组中(
  • 如何从数据库中选择一个不在数组中的随机元素?

你有一个 id 数组,Laravel 的查询生成器接受一个带有 whereNotIn 的数组。 这将运行 SQLWHERE id NOT IN (1, 2, etc)

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

最新更新