【问题标题】:How can I add 2 aliased values in a Laravel query select together?如何在 Laravel 查询选择中添加 2 个别名值?
【发布时间】:2020-08-11 13:04:57
【问题描述】:

我有一个任务表,用于跟踪任务的汽车里程表值。一个任务与它自己相关,并且有一个先前的任务由一个有一个关系定义。我正在尝试创建一个范围以在查询中提取 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。

感谢您的帮助!

【问题讨论】:

    标签: php mysql laravel


    【解决方案1】:

    使用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
    

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 2021-10-01
      • 2021-10-01
      • 2017-06-15
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 2021-04-30
      相关资源
      最近更新 更多