Mic*_*ger 0 php laravel eloquent
我需要将佣金分配给新创建的价格.佣金适用于客户,类型和价格.因此,如果有类型佣金,它应该首先获得它,回退到客户端,回退到默认值.
我的代码有效,但感觉有点"if-y".也许有更好的方法吗?
private function addDefaultOnlineCommission(Price $price)
{
$defaultCommission = (object)Commission::DEFAULT_COMMISSIONS;
$typeCommission = $price->type->commissions()
->where('is_online', '=', true)->first();
$clientCommission = $price->type->client->commissions()
->where('is_online', '=', true)->first();
if (!$clientCommission && !$typeCommission) {
$commission = $defaultCommission;
}
if ($clientCommission && !$typeCommission) {
$commission = $clientCommission;
}
if ($typeCommission) {
$commission = $typeCommission;
}
$price->commissions()->create([
'commission_type' => $commission->commission_type,
'commission_value' => $commission->commission_value,
'min_value' => $commission->min_value,
'is_online' => true,
'valid_from' => Carbon::now()->format('Y-m-d H:i:s'),
]);
}
Run Code Online (Sandbox Code Playgroud)
纯粹自以为是,但我会使用空合并运算符来处理它:
$commission = $typeCommission ?? $clientCommission ?? $defaultCommission;
Run Code Online (Sandbox Code Playgroud)
这将使用第一个非null值.因此它从左到右设置优先级.
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |