【发布时间】:2018-11-19 01:43:36
【问题描述】:
我正在使用 Eloquent ORM,我想设置一个预先加载以查询尽可能少的数据。
我有三个表 countries、states 和 cities,我想获取某个国家/地区的所有州和城市,而不需要有关该国家/地区的其他信息。
我的模型:
国家
public function states () {
return $this->hasMany(State::class);
}
状态
public function country () {
return $this->belongsTo(Country::class);
}
public function cities () {
return $this->hasMany(City::class);
}
城市
public function state () {
return $this->belongsTo(State::class);
}
例如,获取美国的所有州和城市。我想得到如下数据。
[
{
id: 1,
name: 'California',
cities: [
{
id: 1,
name: 'Los Angeles'
}
]
}
]
我怎样才能只使用 Eloquent ORM 助手而不使用 where 或原始 SQL 来实现这一点?
【问题讨论】:
-
您是否已经定义了模型及其关系?您可以将它们添加到问题中吗?
-
我刚刚编辑过。检查一下!
-
您能否就答案提供反馈?
-
@jonas-staudenmeir 我一直在等待使用 Eloquent Relations (
Illuminate\Database\Eloquent\Relations) 的答案。我不认为我得到的答案是令人满意的。也许我需要编辑我的问题... -
你是什么意思?两个答案都使用 Eloquent 关系。