这是这个问题的后续问题。
县模式:
...
public function freguesias() {
return $this->hasMany(\App\Freguesia::class, 'id_county');
}
...
现在基本上我的freguesia模型上有:
...
public function county() {
return $this->belongsTo(\App\County::class, 'id_county');
}
public function weathers() {
return $this->hasMany(\App\Weather::class, 'id_freg');
}
...
我渴望从郡政府那里得到这种关系,例如:
$item = County::with(['freguesias' => function($q) {
$q->with(['weathers']);
}])->select(['id'])->findOrfail(request()->id);
我的主要问题是我必须收集(weathers表中插入的最后一行) id_freg = X
)目前的天气 Freguesia
属于某个特定的 County
. where weathers.id_freg IN (X, Y, Z) ordered by id DESC
我的天气表看起来像:
+--------+-------+---------+
| id | temp | id_freg |
+--------+-------+---------+
| 337 | 12.36 | 1 |
| 3556 | 11.46 | 2 |
| 6775 | 9.30 | 3 |
| 10210 | 8.55 | 1 |
| 13429 | 9.69 | 2 |
我已经有了正确的sql:
select w.*
from weathers w
where w.id_freg in (X, Y, ...) and
w.id = (select max(w2.id)
from weathers w2
where w2.id_freg = w.id_freg
);
但是我如何才能实现这一点呢?或者有没有其他的方式通过县模式呢?
1条答案
按热度按时间stszievb1#
最简单的解决方案是使用有序的
HasOne
关系:这项工作,但获取所有的天气为freguesias时,在急加载使用。
使用您的查询的改进版本: