Является ли My CakePhp относительно отношения, создавая пустые записи?

StackOverflow https://stackoverflow.com/questions/4621377

Вопрос

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

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

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

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

Отредактировано: Вот нынешние отношения между моделями:

Актив:

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'));
Это было полезно?

Решение

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

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

home_assets
realtor_assets
region_assets

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top