我正在尝试使用以下查询查询国家/地区表格,以打印具有相应城市的所有国家/地区。现在我为每个城市获得了一个重复的国家/地区对象,而不是所有城市都有一个国家/地区对象。
$all = ORM::factory('country')->select('cities.*')->join('cities','LEFT')->on('country.id', '=', 'country_id' )->find-all();
foreach ($all as $country) {
echo $caountry->name;
foreach($country->cities as $city ){
echo $city->name;
}
}
感谢您的帮助, AA
答案 0 :(得分:0)
如果您使用的是MySQL并且只需要城市的名称,您可以使用GROUP_CONCAT函数,然后使用PHP的爆炸将其转换为数组。
$all = ORM::factory('country')
->select('country.name',DB::epxr('GROUP_CONCAT(cities.name) AS cities'))
->join('cities','LEFT')
->on('country.id', '=', 'country_id' )
->group_by("country.id")
->find-all();
foreach ($all as $country) {
echo $country->name;
foreach(explode(",",$country->cities) as $city ){
echo $city;
}
}