Php 为什么each()不使用laravel处理Pull()?
在我的令牌表中,我有两条记录,但我只需要Php 为什么each()不使用laravel处理Pull()?,php,laravel,laravel-5,Php,Laravel,Laravel 5,在我的令牌表中,我有两条记录,但我只需要amount列 $hasToken = $this->hasMany(Token::class, 'user_id', 'id')->pluck('amount')->toArray(); 上面的关系返回两条记录 数组(“0”=>500,“1”=>500,) 我想通过使用laraveleach()或each()函数来增加它们,但不起作用 $hasToken->each(function ($item, $key) use($tot
amount
列
$hasToken = $this->hasMany(Token::class, 'user_id', 'id')->pluck('amount')->toArray();
上面的关系返回两条记录
数组(“0”=>500,“1”=>500,)
我想通过使用laraveleach()
或each()
函数来增加它们,但不起作用
$hasToken->each(function ($item, $key) use($totalTokens) {
$totalTokens += $item;
});
此外,我无法尝试使用下面的脚本检查if语句中的计数
if($hasToken->count() > 0){ ... }
因为它返回了错误。这里有两件事出错
首先,如果要在集合上执行数组,则不应将集合转换为数组。这是一种针对特定对象的方法
其次,您希望修改一个值totalTokens
,我假设它超出了您的范围
所以,您应该通过引用来传递它。以下几点应该行得通
$totalTokens = 2;
$hasToken->each(function ($item, $key) use(&$totalTokens) {
$totalTokens += $item;
});
dd($totalTokens); // outputs 1002
另外,$hasToken->count()
应该还能工作
编辑:和
运算符表示此变量正被添加到闭包中
如果省略&
,则表示$totalTokens
按值传递给闭包。换句话说,它被复制到闭包中。您将对$totalTokens
执行的任何操作都不会超出其范围 这里有两件事不对
首先,如果要在集合上执行数组,则不应将集合转换为数组。这是一种针对特定对象的方法
其次,您希望修改一个值totalTokens
,我假设它超出了您的范围
所以,您应该通过引用来传递它。以下几点应该行得通
$totalTokens = 2;
$hasToken->each(function ($item, $key) use(&$totalTokens) {
$totalTokens += $item;
});
dd($totalTokens); // outputs 1002
另外,$hasToken->count()
应该还能工作
编辑:和
运算符表示此变量正被添加到闭包中
如果省略&
,则表示$totalTokens
按值传递给闭包。换句话说,它被复制到闭包中。您将对$totalTokens
执行的任何操作都不会超出其范围 尝试collect($hasToken)->每个(函数($item,$key)使用($totalTokens){$totalTokens+=$item;})
或$hasToken=collect($this->hasMany(Token::class,'user_id','id')->pull('amount')->toArray())
trycollect($hasToken)->每个(函数($item,$key)使用($totalTokens){$totalTokens+=$item;})
或$hasToken=collect($this->hasMany(Token::class,'user_id','id')->pull('amount')->toArray())代码>什么是&
的意思?编辑我的答案以便更好地解释:)什么是&
的意思?编辑我的答案以便更好地解释:)