Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 更新集合并将其返回_Laravel - Fatal编程技术网

Laravel 更新集合并将其返回

Laravel 更新集合并将其返回,laravel,Laravel,我想在循环遍历集合之前更新它。 是否有一种方法可以将emails集合的sent值设置为true,并在实际循环之前返回集合 $emails = Email::where('sent', false); $emails->update(array("sent" => true)); foreach ($emails as $email) { //send email } 我希望能够在某个地方调用->get(),但我无法在更新或初始查询时调用->get()不要忘记在电子邮件::wh

我想在循环遍历集合之前更新它。 是否有一种方法可以将emails集合的sent值设置为true,并在实际循环之前返回集合

$emails = Email::where('sent', false);

$emails->update(array("sent" => true));

foreach ($emails as $email) {
 //send email
}

我希望能够在某个地方调用->get(),但我无法在更新或初始查询时调用->get()

不要忘记在
电子邮件::where('sent',false)
上调用
get
,这是一个
照亮\雄辩\构建器
实例

您可以使用以下内容:

tap(Email::where('sent', false)->get(), function ($emails){
    Email::whereIn('id', $emails->pluck('id')->all())->update(['sent' => true]);
})->each(function($email){
    // Send email
});
tap
函数接受两个参数,第一个参数是要在其上运行第二个参数(回调)的值,然后
tap
函数返回第一个传递的值,您可以在这里轻松循环


参见

$emails=Email::where('sent',false)您的测试记录的当前值是多少?谢谢!我以前从未用过水龙头,很酷!我最初在查询中使用了->get(),但之后无法调用update。