语法错误,意外的“-=”(T_MINUS_EQUAL),需要“]”
syntax error, unexpected '-=' (T_MINUS_EQUAL), expecting ']'
我已经在控制器上写了这个用于更新存在于 user_wallet
table 的 balance
字段(这是 User
中的枢轴 table & Wallet
模型 - 多对多关系)。
$wallet = Wallet::find($wallet_id);
if($value_added_type == '-')
$wallet->users()->updateExistingPivot($user_id,["balance"-=$amount_add_value]);
else
$wallet->users()->updateExistingPivot($user_id,["balance"+=$amount_add_value]);
所以我说"balance"-=$amount_add_value
因为我需要这样计算余额:
balance = balance - $amount_added_value
如果 $value_added_type
增加:
balance = balance + $amount_added_value
但现在我得到这个错误:
syntax error, unexpected '-=' (T_MINUS_EQUAL), expecting ']'
那么在这种情况下如何正确计算 balance
呢?
非常感谢你们的任何想法或建议...
提前致谢。
UPDATE #1:
我试过这个来更新 balance
字段:
// Getting balance field in pivot table based on user_id & wallet_id
$bal = Wallet::with("users")->whereHas('users', function ($query) use ($wallet_id,$user_id) {
$query->where('wallet_id',$wallet_id);
$query->where('user_id',$user_id);
});
// updating balance field
$wallet = Wallet::find($wallet_id);
if($value_added_type == '-'){
$wallet->users()->updateExistingPivot($user_id,["balance" => ($bal - $amount_add_value)]);
}else{
$wallet->users()->updateExistingPivot($user_id,["balance" => ($bal + $amount_add_value)]);
}
但现在我得到这个错误:
Object of class Illuminate\Database\Eloquent\Builder could not be converted to number
["xxx" -= 123]
或 ["xxx" += 123]
不是有效的 PHP 语法。必须是 ["xxx" => ($balance - 123)]
或 ["xxx" => ($balance + 123)]
.
您混淆了一个变量:
$variable -= 123;
$variable += 123;
[ ]
用于数组,与 array()
:
相同
$array1 = [
"index1" => 123
];
echo $array1["index1"];
那将打印 123
...
编辑:
对于您的新更新,您尝试使用 $bal
作为数字值,但这是一个 Builder
作为错误状态,您必须执行 ->first()
以便您得到Model
然后你可以做 $bal->balance
.
所以,这样做:
// Getting balance field in pivot table based on user_id & wallet_id
$bal = Wallet::with("users")->whereHas('users', function ($query) use ($wallet_id,$user_id) {
$query->where('wallet_id',$wallet_id);
$query->where('user_id',$user_id);
})->first();
// updating balance field
$wallet = Wallet::find($wallet_id);
if($value_added_type == '-'){
$wallet->users()->updateExistingPivot($user_id, ["balance" => ($bal->balance - $amount_add_value)]);
}else{
$wallet->users()->updateExistingPivot($user_id, ["balance" => ($bal->balance + $amount_add_value)]);
}
或使用与balance
相关的相应字段。我用了 ->balance
但我不知道你的 Model/Database 是什么。
我已经在控制器上写了这个用于更新存在于 user_wallet
table 的 balance
字段(这是 User
中的枢轴 table & Wallet
模型 - 多对多关系)。
$wallet = Wallet::find($wallet_id);
if($value_added_type == '-')
$wallet->users()->updateExistingPivot($user_id,["balance"-=$amount_add_value]);
else
$wallet->users()->updateExistingPivot($user_id,["balance"+=$amount_add_value]);
所以我说"balance"-=$amount_add_value
因为我需要这样计算余额:
balance = balance - $amount_added_value
如果 $value_added_type
增加:
balance = balance + $amount_added_value
但现在我得到这个错误:
syntax error, unexpected '-=' (T_MINUS_EQUAL), expecting ']'
那么在这种情况下如何正确计算 balance
呢?
非常感谢你们的任何想法或建议...
提前致谢。
UPDATE #1:
我试过这个来更新 balance
字段:
// Getting balance field in pivot table based on user_id & wallet_id
$bal = Wallet::with("users")->whereHas('users', function ($query) use ($wallet_id,$user_id) {
$query->where('wallet_id',$wallet_id);
$query->where('user_id',$user_id);
});
// updating balance field
$wallet = Wallet::find($wallet_id);
if($value_added_type == '-'){
$wallet->users()->updateExistingPivot($user_id,["balance" => ($bal - $amount_add_value)]);
}else{
$wallet->users()->updateExistingPivot($user_id,["balance" => ($bal + $amount_add_value)]);
}
但现在我得到这个错误:
Object of class Illuminate\Database\Eloquent\Builder could not be converted to number
["xxx" -= 123]
或 ["xxx" += 123]
不是有效的 PHP 语法。必须是 ["xxx" => ($balance - 123)]
或 ["xxx" => ($balance + 123)]
.
您混淆了一个变量:
$variable -= 123;
$variable += 123;
[ ]
用于数组,与 array()
:
$array1 = [
"index1" => 123
];
echo $array1["index1"];
那将打印 123
...
编辑:
对于您的新更新,您尝试使用 $bal
作为数字值,但这是一个 Builder
作为错误状态,您必须执行 ->first()
以便您得到Model
然后你可以做 $bal->balance
.
所以,这样做:
// Getting balance field in pivot table based on user_id & wallet_id
$bal = Wallet::with("users")->whereHas('users', function ($query) use ($wallet_id,$user_id) {
$query->where('wallet_id',$wallet_id);
$query->where('user_id',$user_id);
})->first();
// updating balance field
$wallet = Wallet::find($wallet_id);
if($value_added_type == '-'){
$wallet->users()->updateExistingPivot($user_id, ["balance" => ($bal->balance - $amount_add_value)]);
}else{
$wallet->users()->updateExistingPivot($user_id, ["balance" => ($bal->balance + $amount_add_value)]);
}
或使用与balance
相关的相应字段。我用了 ->balance
但我不知道你的 Model/Database 是什么。