用戶角色我有現有用戶的角色列表中的數據庫,例如像這樣:不能關聯與用戶
+----+-------+-----------+
| id | level | label |
+----+-------+-----------+
| 1 | 0 | admin |
| 2 | 1 | moderator |
| 3 | 2 | blogger |
+----+-------+-----------+
而且我想它的創建時給角色附加到用戶。我已經試過是以下幾點:
在我BcUsersController:
$bcUser = $this->BcUsers->patchEntity($bcUser, $this->request->data,
[
'associated' => [
'BcUserInfos',
'BcUserRoles'
]
]
);
if ($this->BcUsers->save($bcUser))...
協會:
//BcUserRolesTable
$this->belongsToMany('BcUsers', [
'className' => 'BcUsers',
'foreignKey' => 'role',
'propertyName' => 'BcUserRoles'
]);
//BcUsersTable
$this->hasMany('BcUserRoles', [
'className' => 'BcUserRoles',
'foreignKey' => 'id',
'bindingKey' => 'role',
'propertyName' => 'BcUserRoles',
'joinTable' => 'bc_user_roles'
]);
這是我嘗試注入userRoleId到用戶表:
<?= $this->Form->input('BcUserRoles.level', ['type' => 'hidden', 'value' => '0']); ?>
或
<?= $this->Form->input('BcUserRoles.id', ['type' => 'hidden', 'value' => '1']); ?>
當我嘗試保存它時,只是刷新了頁面和頁面數據內部字段,並沒有出現任何錯誤。如果我刪除所有關聯代碼,它將保存user + userInfo。我在這裏錯過了什麼?
編輯
我剛剛發現了一個錯誤,我$bcUser
變量:
'[errors]' => [
'role' => [
'_required' => 'This field is required'
]
],
我想這就是爲什麼它不保存BcUser,也UserRole的協會是空的:
'BcUserRoles' => [],
所以它不會保存userRole到用戶表,即使我會刪除
->requirePresence('role', 'create')
from BcUsersTable,會嗎?
剛剛測試。它會拋出SQL錯誤,因爲角色不在查詢參數中,而在數據庫中它必須在那裏,不允許使用null。所有用戶都應該有一個角色。
您的BcUserRoles是否有與BcUsers一起定義的關聯? – styks
@Kelvin是的,它顯示在代碼 – ksno
的第二部分中,是否閱讀[this](http://book.cakephp.org/3.0/en/views/helpers/form.html#creating-inputs-for-associated-數據)段來自手冊?輸入名稱應該是'bc_user_roles.level'和'bc_user_roles.id'。我也會遵循tarikul05的建議 – arilia