【问题标题】:How to override computations in database?如何覆盖数据库中的计算?
【发布时间】:2021-03-03 09:10:35
【问题描述】:

我在数据库中有名为 basic_salary 的列。除了basic_salary,特定表中还有另一列称为exempt_rate

现在,例如,我想覆盖 basic_salary 数据。 (如果rate_exemptTrue 那么basic_salary 不需要更改然后如果rate_exemptFalse 我需要为它创建计算。

例子:

basic_salary * hours_work * payroll

如何在不更改数据库中basic_salary 的值的情况下在每个codeigniter 函数上实现它?

【问题讨论】:

标签: php sql codeigniter web


【解决方案1】:

在不知道一些细节的情况下(例如,您只想显示变量编号或将其存储在某处;或者如果您需要在许多地方或仅在一个地方这样做),您可以这样做:

$calc = ($rate_exempt === true) ? $basic_salary : $basic_salary * $hours_work * $payroll;

通过执行上述操作,$calc 变量将根据$rate_exempt 是否为真取适当的值

如果您需要在很多地方执行此操作,您可以在共享模型或自定义助手中使用此 sn-p,将数据库中的所有数据作为参数传递并返回响应。例如,将其作为助手:

function modifySalary($basic_salary, $exempt, $hours, $payroll)
{
  $calc = ($exempt === true) ? $basic_salary : $basic_salary * $hours * $payroll;
   return $calc;
}

然后,只需将助手加载到您需要的任何地方并使用它调用它

modifySalary($basic_salary, $exempt, $hours, $payroll);

【讨论】:

    【解决方案2】:

    您可以在选择中为具有相同名称的字段添加新含义:

    SELECT if(rate_exempt = "True", basic_salary, basic_salary * hours_work * payroll) as basic_salary 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 2013-09-07
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多