在我的令牌表中,我有两条记录,但我只需要amount
列。
$hasToken = $this->hasMany(Token::class, 'user_id', 'id')->pluck('amount')->toArray();
以上关系返回两条记录
数组(“0”=> 500,“1”=> 500,)
我想通过使用 laraveleach()
或every()
函数来添加它们但不起作用
$hasToken->each(function ($item, $key) use($totalTokens) {
$totalTokens += $item;
});
此外,我无法尝试if-statement
使用以下脚本检查计数
if($hasToken->count() > 0){ ... }
因为它正在返回错误。
这里有一些错误。
首先,如果要对其执行each(),则不应将集合转换为数组。这是Laravel Collections特有的方法。
$hasToken = $this->hasMany(Token::class, 'user_id', 'id')->pluck('amount');
其次,您想修改totalTokens
我认为超出您范围的值。
所以,你应该通过引用传递它。以下应该工作。
$totalTokens = 2;
$hasToken->each(function ($item, $key) use(&$totalTokens) {
$totalTokens += $item;
});
dd($totalTokens); // outputs 1002
也$hasToken->count()
应该再次工作。
编辑:&
操作符表示这个变量是通过引用传递给闭包的。
如果省略&
,则表示$totalTokens
按值传递给闭包。换句话说,它被复制到闭包中。您将对 执行的任何操作$totalTokens
都不会超出其范围。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句