我有以下2个表格:
var newWin ;
function openWindow(id) {
newWin = window.open(url,config,setting);
var resizePopup = function () {
newWin.resizeTo(newWin.document.getElementById("certainID").offsetWidth,100);
newWin.focus();
};
var tryResize = function(){
if(newWin.document.getElementById("certainID")==null){
setTimeout(function(){tryResize();},500);
}
else{
resizePopup();
}
}
tryResize();
};
我想显示按Cars
----
id | created_at
and
Repaired
id | cars_id | updated_at
desc排序的所有车辆,但也是created_at
数据透视表中updated_at
订购的车辆。修复可以包含许多特定Repaired
的条目。
因此,如果cars_id
已创建_为carA
,2017-02-20
已创建_为carB
,则已修复2016-01-10
中的updated_at
已于{ {1}},我想在carB
之前显示2017-02-22
,因为关系是"更新"。
我也不想从关系表中加载数据。
我尝试了以下内容:
carB
和
carA
^即使$cars = $model->load(['repaired' => function($query) {
return $query->orderBy('updated_at', 'desc');
}])->orderBy('created_at', 'desc');
字段为$model->join('repaired', 'repaired.cars_id', '=', 'cars.id')
->orderBy('repaired.updated_at', 'desc')
->orderBy('cars.created_at', 'desc')
->select('cars.*');
,此查询也会返回“已修复”表中的所有项目。我无法对它们进行分组。
答案 0 :(得分:1)
每次修复更新后,您都可以使用Eloquent中的touch parent timestamps
功能更新汽车的updated_at
。
在修复模型中,只需添加以下行:
protected $touches = ['car'];
这假设您的关系方法当然名为car()
。
然后你可以这样做:
Cars::orderBy('updated_at');
每次添加或更新Repaired
表格中的行时,car
关系中指定的汽车的updated_at
设置为同一时间。这样你可以通过它订购。
答案 1 :(得分:0)
$popular_posts = Post::withCount('favorite_to_users')
->orderBy('view_count', 'desc')
->orderBy('favorite_to_users_count', 'desc')
->take(5)->get();