может кто-нибудь дать мне объяснение?CakePHP добавление нескольких таблиц с одного взгляда
У меня есть база данных, где я пытаюсь обновить 4 таблицы с одной страницы, организации, организацииПодробности, учетная запись, учетные записи. В самом представлении добавления будут отображаться поля для Учетной записи и Организации. Когда я вызываю функцию AddController OrganizationController, я хочу затем вызвать add на AccountController, AccountRolesController (установить учетную запись как роль администратора) и OrganizationDetailsController (установить эту учетную запись в качестве администратора для этой конкретной организации).
Должен ли я использовать компоненты для этого? Когда я вызываю add() в Организации, я всегда намереваюсь выполнить эти действия - никогда не создавайте запись организаций только ниже. Должен ли я делать это непосредственно в этой функции или какой-либо другой метод?
Дайте мне знать, если мне нужно будет объяснить больше, спасибо!
EDIT: Добавлены четыре модели ниже: Организация
class Organization extends AppModel {
public $hasMany = array(
'Account' => array(
'className' => 'Account',
'foreignKey' => 'organization_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
public $hasOne = array(
'OrganizationDetail' => array(
'className' => 'OrganizationDetail',
'foreignKey' => 'organization_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
OrganizationDetail
class OrganizationDetail extends AppModel {
public $belongsTo = array(
'Organization' => array(
'className' => 'Organization',
'foreignKey' => 'organization_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Account' => array(
'className' => 'Account',
'foreignKey' => 'account_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
AccountRole
class AccountRole extends AppModel {
public $belongsTo = array(
'Account' => array(
'className' => 'Account',
'foreignKey' => 'account_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Role' => array(
'className' => 'Role',
'foreignKey' => 'role_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
Счет
class Account extends AppModel {
public $belongsTo = array(
'Organization' => array(
'className' => 'Organization',
'foreignKey' => 'organization_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
public $hasOne = array(
'OrganizationDetail' => array(
'className' => 'OrganizationDetail',
'foreignKey' => 'account_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
public $hasMany = array(
'AccountRole' => array(
'className' => 'AccountRole',
'foreignKey' => 'account_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
Какую версию вы используете в cakephp? –
2.7. Я также думаю, должна ли эта новая пользовательская модель запрашивать эти 4 таблицы? Или правило обычно 1 Model-1 DB table. – user2936644
Не могли бы вы показать свои ассоциации моделей?Если все эти модели правильно связаны друг с другом, вы должны иметь возможность устанавливать значения в массиве '$ this-> request-> data' и выполнять соответствующий тип метода save() для захвата всех связанных данных в одном перейдите из организацииController. –