所以基本上我想创建一个类似于
的列表数组Array("Region")
['id'] => 1
['city'] => Array()
所以从数据库中我得到了这样的区域:
$regions = Region::get()->keyById()->toArray();
$cities = City::get()->toArray();
然后
foreach($city as $city)
{
$regions[city['region_id']]['cities'][] = city;
}
这是有效的,当我在var_dump
上使用$region[index]
时,它会按预期显示id
和city
[0]=>
['id'] => 1
other_contents
['city'] => Array()
var_dump
上的$region['city']
也返回其相应的内容数组。
Array("Region")
['id'] => 1
['region_id'] => 1
other_contents
但是,当我var_dump-ed $region['id']
时,它会返回Undefined index: id
。
表格结构
Region
id
other_content
City
id
region_id
other_content
答案 0 :(得分:0)
错误在于此代码,
$regions[city['region_id']]['cities'][] = city;
$ regions是$ region的数组,数组索引是0,1,2,而不是region_id
您可以更改为此
$regions = Region::get()->keyById()->toArray();
foreach($regions as $region)
{
$region['cities'] = City::where('region_id', $region->id)->get()->toArray();
}
但我建议你使用laravle一对多的雄辩。
将其添加到区域模型
public function cities()
{
return $this->hasMany('City', 'region_id');
}
将此添加到城市模型
public function region()
{
return $this->belongsTo('Region', 'region_id');
}
然后在你的控制器中你可以使用
$region->cities()
获取该地区的所有城市。
希望它有所帮助。