我的模型名称为"Date"
,其关系(one-to-one)
与"Tour"
和"Tour"
模型的关系(many-to-many)
与"Type"
模型。
我想根据"Type"
名称订购我的日期记录。不幸的是,我没有任何线索可以用雄辩的方式来做。
Date model:
public function Tour()
{
return $this->belongsTo('\App\Tour');
}
Tour model:
public function Date()
{
return $this->hasOne('\App\Date','tour_id');
}
public function Types()
{
return $this->belongsToMany('\App\Type');
}
Type model:
public function Tours()
{
return $this->belongsToMany('\App\Tour');
}
和我的controller
输出:
public function tourList()
{
$dates = new Date();
$dates = $dates->orderBy('id','asc')
->paginate(6)
->appends([
'sort_price' => request('sort_price'),
'minmax' => request('minmax'),
'type' => request('type')
]);
return view('primary.Tour.list', compact(['dates']));
}
答案 0 :(得分:0)
$dateRes = Date::join('type_tour as TT', 'TT.tour_id', '=', 'date.tour_id')
->join('type as T','TT.type_id','=','T.id')
->orderBy('T.name')
->get();
看看它是否适合你。
答案 1 :(得分:0)
如果要基于嵌套关系列对结果进行排序,则必须使用连接链:
$result= Date::join('tours','tours.id','=','dates.tour_id')
->leftJoin('type_tour','type_tour.tour_id','=','tours.id')
->leftJoin('types','types.id','type_tour.type_id')
->orderBy('types.name')->get();
确保游览和类型表之间的关系中间表是type_tour 可能是tour_type或其他东西...
请注意,如果要按多列排序,则可以根据需要添加'orderBy'子句:
->orderBy('Types.id', 'DESC')->orderby('Types.name', 'ASC') //... ext