2012-05-01 2 views
0

아래의 쿼리로 country 테이블을 쿼리하여 해당 도시가있는 모든 국가를 인쇄하려고합니다. 이제는 모든 도시에 대해 하나의 국가 객체를 가지는 대신 각 도시에 대해 중복 된 국가 객체를 얻습니다. kohana orm이 중복 오브젝트 결과를 결합합니다.

$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

당신이 MySQL을 사용하고 단지 도시의 이름을 필요로하는 경우, 당신은 PHP의 폭발하여 배열에 GROUP_CONCAT 기능을 사용하고 변환 할 수 있습니다.

$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; 
    } 
} 
+0

팁 주셔서 감사합니다. – Abbas

관련 문제