Как работать с данными соединения в codeigniter? - PullRequest
1 голос
/ 23 декабря 2009

Я играю с codeigniter и пытаюсь разобраться с активной системой записи и тому подобное. Я настроил пару таблиц и пытаюсь выполнить на них объединение, например:

function GetOrganisationsAndBuildingDetails()
{
    $this->db->select('organisations.organisation_name,
                       organisations.organisation_id,
                       buildings.building_name,
                       buildings.address1');
    $this->db->from('organisations')->join('buildings', 'buildings.organisation_id = organisations.organisation_id');
    $query = $this->db->get();
    return $query->result();
}

В моей базе данных есть одна организация с двумя смежными зданиями. Приведенный выше запрос возвращает два объекта (по одному на каждое здание), однако организация дублируется.

  • stdClass Object ( [имя_организации] => Это пример организации [organisation_id] => 1 [building_name] => тестовое здание [address1] => 123456)

  • stdClass Object ( [имя_организации] => Это пример организации [organisation_id] => 1 [building_name] => teeeest building [address1] => 123456)

Полагаю, я ожидал чего-то по линии одного возвращаемого объекта с рядом вложенных объектов для связанных зданий. Это возможно? Если нет, то являются ли они рекомендуемым способом упорядочения возвращаемых данных, чтобы я мог легко просматривать их в представлении? (foreach org, foreach building и т. д.).

Прошу прощения, если я буду немного дремучим здесь. Я иду из .net и (в частности, из linq в SQL), где это немного отличается)

1 Ответ

1 голос
/ 23 декабря 2009

Запрос неизбежно вернет дубликаты данных, как вы говорите, вы должны упорядочить их после того, как получите такой результат

$buildings = array();

foreach ( $result_object as $organization ) {
    $building_data = array(
        'building_name' => $organization->building_name,
        'address'       => $organization->address,
    );
    $buildings[$organization->organization_name][] = $building_data;
}

таким образом, организации будут «сжаты» в первом ключе многомерного массива, и на один уровень глубже у вас будет информация о зданиях. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...