Многие ко многим DataMapper CodeIgniter - PullRequest
1 голос
/ 03 апреля 2012

Я застрял, и чтение документации, похоже, не помогает мне.

У меня работают отношения один ко многим, хотя я уверен, что есть более простой путь, я застрял, когда дело доходит до отношений Многие ко многим.

Я пробовал довольно много вещей, но в основном у меня есть три таблицы:

homes:
- id
- address_id
- price
- etc

features:
- id
- name

features_homes
- id
- feature_id
- home_id

Я настроил свою модель несколькими различными способами.

var $has_many = array(
    'feature' => array(
        'class' => 'feature',
        'other_field' => 'home',
        'join_self_as' => 'home',
        'join_other_as' => 'feature',
        'join_table' => 'features_homes'
    )
);

И базовая версия

var $has_many = array('feature');

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

Я получаю один предмет, а не группу предметов.

Пример вывода:

[id] => 1
[address_id] => 1
[latlong] => 00.000, -00.00000
...
[feature_id] => 1
[feature_name] => Hard Wood Floors

Я пытаюсь получить

[id] => 1
[address_id] => 1
[latlong] => 00.000, -00.00000
...
[features] => // Object of all items

1 Ответ

1 голос
/ 03 апреля 2012

Вы связываете один объект с другим, связывая их при сохранении.

Вы можете сделать это несколько раз:

$parent = new Parent(1);
$childA = new Child(1);
$childB = new Child(2);

$parent->save($childA); $parent->save($childB);

Или, передав массив:

$parent = new Parent(1);
$children = array(
    new Child(1),
    new Child(2),
);

$parent->save($children);
...