在令牌表中,我有两条记录,但是我只需要amount
列。
$hasToken = $this->hasMany(Token::class, 'user_id', 'id')->pluck('amount')->toArray();
以上关系返回两个记录
array(“ 0” => 500,“ 1” => 500,)
我想通过使用laravel each()
或every()
函数来添加它们,但是不起作用
$hasToken->each(function ($item, $key) use($totalTokens) {
$totalTokens += $item;
});
我也无法尝试使用以下脚本
检查if-statement
中的计数
if($hasToken->count() > 0){ ... }
因为它返回错误。
答案 0 :(得分:2)
这里有些错误。
首先,如果要对其执行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()
也应该重新工作。
编辑:&
运算符表示此变量在闭包中passed by referenced。
如果省略&
,则意味着$totalTokens
按值传递给闭包。换句话说,它被复制到闭包中。在$totalTokens
范围内不会进行任何操作。