如何在laravel雄辩地按相关表的列排序?

时间:2019-07-03 10:21:16

标签: php mysql laravel eloquent

我有两个表,它们的模型分别是Attendance和Line, 我试图从“出勤”中获取全部信息,该出勤是按line_id分组并按行名称排序的

这是我尝试过的一部分

public function lineWiseReport(Attendance $attendance){
        $repository = $this->repository;


        if(Input::has('date')){
            $date = Input::get('date');
            $attn->where('date','like','%'.$date.'%');
            $attendances = $attn
                ->where('employee_type_id',2)
                ->orderBy('lines.name', 'ASC') //how to do this?
                ->get()->groupBy('line_id');
        }else{
            $date = '';
            $attendances = [];
        }
    }


class Attendance extends Model
{
public function line()
    {
        return $this->belongsTo(Line::class);
    }
}

现在我仅按line_id进行分组,但我希望它按照升序排列,如A行,B行,C行。

1 个答案:

答案 0 :(得分:4)

您必须先与lines表联接,然后才能使用该表中的值。

$attendances = $attn
    ->join('lines', 'lines.id', '=', 'line_id')
    ->where('employee_type_id', 2)
    ->orderBy('lines.name', 'ASC') //how to do this?
    ->get()
    ->groupBy('line_id');

但是,如果模型包含更多行,这可能会返回更多记录。