如何从 laravel 5.2 中的查询构建器的块函数中获取变量?
How can I get variable from chunk function of query builder in laravel 5.2?
我正在尝试使用 laravel 5.2 查询生成器的块方法处理 'message' table 中的一些记录。但是我无法在查询构建器之外的数组中获取已处理的 ID。
我可以通过将变量声明为全局变量来访问它,但还有其他方法吗?
我在块完成后需要这个,因为如果我在同一个循环中更新记录,那么块将跳过记录。由于块像分页一样工作。
使用全局(工作):
global $m_ids;
DB::table("messages")
->where('processed','0')
->chunk(100, function ($messages){
foreach ($messages as $message) {
$GLOBALS['$m_ids'][] = $message->id;
}
});
echo "<pre>"; print_r($GLOBALS['$m_ids']); die;
更改代码:
$m_id = [];
DB::table("messages")
->where('processed','0')
->chunk(100, function ($messages) use(&$m_id){
foreach ($messages as $message) {
$m_id[] = $message->id;
}
});
echo "<pre>"; print_r($m_id); die;
我正在尝试使用 laravel 5.2 查询生成器的块方法处理 'message' table 中的一些记录。但是我无法在查询构建器之外的数组中获取已处理的 ID。
我可以通过将变量声明为全局变量来访问它,但还有其他方法吗?
我在块完成后需要这个,因为如果我在同一个循环中更新记录,那么块将跳过记录。由于块像分页一样工作。
使用全局(工作):
global $m_ids;
DB::table("messages")
->where('processed','0')
->chunk(100, function ($messages){
foreach ($messages as $message) {
$GLOBALS['$m_ids'][] = $message->id;
}
});
echo "<pre>"; print_r($GLOBALS['$m_ids']); die;
更改代码:
$m_id = [];
DB::table("messages")
->where('processed','0')
->chunk(100, function ($messages) use(&$m_id){
foreach ($messages as $message) {
$m_id[] = $message->id;
}
});
echo "<pre>"; print_r($m_id); die;