我正在尝试执行以下操作:
页面加载时:
从数据库中随机选择一个想法。
我的代码:
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();