有没有更好的方法在 laravel 中编写这个 if 语句

时间:2021-06-29 06:19:16

标签: laravel if-statement eloquent

美好的一天,我是 laravel 的新手,我仍在学习中。

我的问题是这段代码有效,但我觉得它没有必要,可以写得更好,请有人帮忙,切换案例会更好,或者有更好的方法来写这个,请向我解释,谢谢。

>

debtorscontroller.php

    $debtors_created_at = $debtors->created_at;
    $now = Carbon::now();
    $created_at_in_days = $debtors_created_at->diffInDays($now);


     if ($created_at_in_days >= 0 and $created_at_in_days <= 10){

         Debtor::whereId($debtorid)->update(['collection_level' => 'Pre Collection']);
     }elseif ($created_at_in_days >= 11 and $created_at_in_days <= 30){

            Debtor::whereId($debtorid)->update(['collection_level' => 'Collection Level 1']);
        }
     elseif ($created_at_in_days >= 31 and $created_at_in_days <= 60){

         Debtor::whereId($debtorid)->update(['collection_level' => 'Collection Level 2']);
     }
     elseif ($created_at_in_days >= 61){

         Debtor::whereId($debtorid)->update(['collection_level' => 'Collection Level 3']);
     }

这只是检查债务人是否被创建,如果它是 1-10 天,它会改变

它的水平

天 1-10为预收 11-30为收藏等级1 31-60是收藏等级2 61-90+为收藏等级3

这是我的债务人表 collection_level 中的一个字段

2 个答案:

答案 0 :(得分:2)

你可以使用 switch 语句来做同样的事情 -

$debtors = Debtor::whereId($debtorid);
$created_at_in_days = $debtors->created_at->diffInDays(Carbon::now());

switch ($created_at_in_days) {
    case $created_at_in_days >= 0 and $created_at_in_days <= 10:
        $debtors->update(['collection_level' => 'Pre Collection']);
        break;
    case $created_at_in_days >= 11 and $created_at_in_days <= 30:
        $debtors->update(['collection_level' => 'Collection Level 1']);
        break;
    case $created_at_in_days >= 31 and $created_at_in_days <= 60:
        $debtors->update(['collection_level' => 'Collection Level 2']);
        break;
    case $created_at_in_days >= 61:
        $debtors->update(['collection_level' => 'Collection Level 3']);
        break;         
    default:
        $debtors = $debtors->get();

答案 1 :(得分:0)

$debtors = Debtor::whereId($debtorid);
$created_at_in_days = $debtors->created_at->diffInDays(Carbon::now());
$caption ="";
switch ($created_at_in_days) {
   case $created_at_in_days >= 0 and $created_at_in_days <= 10:
       $caption = 'Pre Collection';
       break;
   case $created_at_in_days >= 11 and $created_at_in_days <= 30:
       $caption =  'Collection Level 1';
       break;
   case $created_at_in_days >= 31 and $created_at_in_days <= 60:
       $caption = 'Collection Level 2';
       break;
   case $created_at_in_days >= 61:
       $caption =  'Collection Level 3';
       break;         
   default:
       $caption = '';
}
$debtors  =  $caption ?   $debtors->update(['collection_level' => $caption]) : $debtors->get();
相关问题