如何覆盖数据库中的计算



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

现在,我想覆盖例如basic_salary数据。(如果rate_exemptTrue,则不需要改变basic_salary,则如果rate_exemptFalse,则我需要为其创建计算。

示例:

basic_salary * hours_work * payroll

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

在不知道一些细节的情况下(例如,如果你只想显示变量数或将其存储在某个地方;或者如果你需要在多个地方或只在一个地方进行(,你可以这样做:

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

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

如果您需要在许多地方执行此操作,可以在共享模型或自定义帮助程序中包含此代码段,将数据库中的所有数据作为参数传递并返回响应。例如,将其作为助手:

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

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

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

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

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

最新更新