Php 两个子句上的Laravel orderBy,一个使用leftJoin

Php 两个子句上的Laravel orderBy,一个使用leftJoin,php,sorting,laravel-5,Php,Sorting,Laravel 5,我有两个表-canvas和canvas\u details-一个canvas可以有多个canvas\u details TABLE 'canvas'( 'id' 'name' 'canvas_type' 'created_at' 'updated_at') TABLE 'canvas_details' ( 'id' 'canvas_id' 'block_number' 'block_title' 'color'

我有两个表-canvas和canvas\u details-一个canvas可以有多个canvas\u details

TABLE 'canvas'(
    'id'
    'name'
    'canvas_type'
    'created_at'
    'updated_at')

TABLE 'canvas_details' (
    'id'
    'canvas_id'
    'block_number'
    'block_title'
    'color'
    'size'
    'notes'
    'image'
    'order'
    'created_at'
    'updated_at')
在我的控制器中,我有一个功能:

public static function canvasList($id){
    $canvas_list = \DB::table('canvas')
    ->select(\DB::raw('distinct(canvas.id),canvas.name'))
    ->join('canvas_user','canvas.id','=','canvas_user.canvas_id')
    ->leftJoin('canvasdetails','canvas.id','=','canvasdetails.canvas_id')
    ->where('canvas_user.user_id',$id)
    ->orderBy('canvas.updated_at','desc')       
    ->get();
    return $canvas_list}
我使用它来显示画布上次更新时按用户排序的画布名称列表

创建画布时,它最初没有任何画布详细信息。创建或更新关联的canvas_详细信息不会更新canvas updated_at字段,但会更新canvas_details updated_at字段

我需要做的是对画布的详细信息上次更新的时间进行排序

我想在上次更新的画布或上次更新的画布详细信息上显示按desc排序的画布名称列表

考虑到canvas可能有或可能没有canvas_详细信息-是否有方法根据canvas_详细信息记录的存在添加该排序

该项目位于Laravel 5.2中