Мои отношения CakePHP принадлежат к созданию пустых записей? - PullRequest
0 голосов
/ 07 января 2011

У меня есть две таблицы базы данных, дома и активы, с отношением HasMany-BelongsTo.

До недавнего времени каждый актив принадлежал одному дому. В последнее время это стало более сложным: теперь некоторые активы принадлежат риэлтору или региону, а не дому.

Сегодня я видел десятки пустых записей, появляющихся в моей таблице Домов. Кажется почти уверенным, что они являются результатом спасения новых активов, которые не связаны с домом.

Вероятно ли, что отношения BelongsTo Home в модели активов вынуждают создавать эти пустые записи? (Или есть другая вероятная причина?) Если это отношения, есть ли быстрый способ изменить отношения, чтобы генерация актива могла, но не обязательно, идти рука об руку с генерацией нового Домашняя запись?

РЕДАКТИРОВАНИЕ : Вот текущие отношения между моделями:

Asset:

var $belongsTo = array(
   'Home' =>array('className' => 'Home', 'foreignKey' => 'home_num'));

var $hasOne = array(
   'Landmark' =>array('className' => 'Landmark', 'foreignKey' => 'asset_num',
              'dependent' => true ));

Начало:

var $hasOne = array('HighlightImage' => array(
    'className'     => 'Asset',
    'conditions'    => 'highlight_image = TRUE',
    'order'         => '',
    'foreignKey'    => 'home_num',
    'dependent'     => false,
    'exclusive'     => false,
    'finderQuery'   => ''));

var $hasMany = array('Assets' => array(
    'className'     => 'Asset',
    'conditions'    => '',
    'order'         => '(Assets.title + 0 ) ASC',
    'limit'         => '200',
    'foreignKey'    => 'home_num',
    'dependent'     => false,
    'exclusive'     => false,
    'finderQuery'   => ''));

Ориентир:

var $belongsTo = array(
    'Assets' => array(
        'className' => 'Asset',
        'foreignKey' => 'asset_num'),
'Regions' =>array(
        'className' => 'Region',
        'foreignKey' => 'region_num'));

Регион:

var $hasMany = array('Landmarks' => array(
     'className' => 'Landmark',
     'foreignKey' => 'region_num'));

1 Ответ

0 голосов
/ 07 января 2011

Похоже, у вас есть то, что известно как отношения ARC. Это означает, что у вас есть одна таблица активов, которая имеет несколько отношений. Как вы описали выше, кажется, что теперь таблица «Активы» будет содержать данные, которые могут принадлежать 3 различным таблицам: дома, риэлторы или регионы. По моему опыту, торт не очень хорошо справляется с отношениями ARC.

Мой совет - создать несколько таблиц активов:

home_assets
realtor_assets
region_assets

На первый взгляд, вы можете подумать, что все кончено. Однако, с точки зрения простоты, это лучший способ сделать это.

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

Если вы предоставите образец кода, который вы используете (для дома, риэлтора и региона) применительно к активам, диагностику будет проще. Подумайте об использовании pastebin.com, поскольку я предполагаю, что кодовый набор может быть довольно большим.

...