如何解决如何在Laravel查询中一起选择2个别名值?
我有一个任务表,该表跟踪任务的汽车里程表值。一项任务与自身相关,并且具有一个关系定义了一个先前的任务。我正在尝试创建一个范围以在查询中插入complete_at_odometer值。
此值等于上一个任务的completed_at_odometer值加上当前任务需要重复的频率。例如,当前的任务A需要每10英里完成一次。最后一个任务,任务B在5英里处完成。我正在尝试创建一个范围,将值complete_at_odometer添加到应该等于15的结果中。
这是我到目前为止所拥有的:
public function scopeWithCompleteByOdometer($query)
{
return $query
->join('tasks as oldTask','oldTask.current_task_id','=','tasks.id')
->select(
'*','oldTask.completed_at_odometer as last_odometer','tasks.distance_interval as interval'
);
}
我不确定如何将值last_odometer和interval加在一起,同时保留在应用程序的数据库层中?
我正在使用Laravel 7和MySql 5.7。
感谢您的帮助!
解决方法
使用DB::raw
查询:
return $query
->join('tasks as oldTask','oldTask.current_task_id','=','tasks.id')
->select(DB::raw('(oldTask.completed_at_odometer + tasks.distance_interval) AS total'));
或从这样获得的结果中求和
$a = $row->completed_at_odometer;
$b = $row->distance_interval;
$total = $a+$b