首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存与CakeDC用户的关联

保存与CakeDC用户的关联
EN

Stack Overflow用户
提问于 2022-02-26 20:44:40
回答 1查看 24关注 0票数 0

我正在使用CakeDC用户,作为注册的一部分,我希望注册人选择一些与应用程序中的另一个模型对应的复选框值。我能够很好地获得表单来加载选择,但我无法将其保存到联接表中,即使我已经在所有的关联和可访问性看起来相关的地方添加了这些关联和访问性。该表单的显示方式与其他区域相似,在这些区域,我使用不同的模型保存相同类型的关联。

TypesTable.php

代码语言:javascript
复制
{
    public function initialize(array $config): void
    {
        //$this->addBehavior('Timestamp');
        $this->setDisplayField('type');
        $this->setPrimaryKey('id');
        $this->belongsToMany('Words');
        $this->belongsToMany('Users');
        $this->belongsTo('Languages', [
            'foreignKey' => 'language_id',
            'joinType' => 'INNER',
        ]);
    }```

UsersTable.php (in the plugin folders)
```class UsersTable extends Table

{

..。

代码语言:javascript
复制
public function initialize(array $config): void
代码语言:javascript
复制
{
代码语言:javascript
复制
    parent::initialize($config);
代码语言:javascript
复制
    $this->setTable('users');
代码语言:javascript
复制
    $this->setDisplayField('username');
代码语言:javascript
复制
    $this->setPrimaryKey('id');
代码语言:javascript
复制
    $this->addBehavior('Timestamp');
代码语言:javascript
复制
    $this->addBehavior('CakeDC/Users.Register');
代码语言:javascript
复制
    $this->addBehavior('CakeDC/Users.Password');
代码语言:javascript
复制
    $this->addBehavior('CakeDC/Users.Social');
代码语言:javascript
复制
    $this->addBehavior('CakeDC/Users.LinkSocial');
代码语言:javascript
复制
    $this->addBehavior('CakeDC/Users.AuthFinder');
代码语言:javascript
复制
    $this->hasMany('SocialAccounts', [
代码语言:javascript
复制
        'foreignKey' => 'user_id',
代码语言:javascript
复制
        'className' => 'CakeDC/Users.SocialAccounts',
代码语言:javascript
复制
    ]);
代码语言:javascript
复制
    $this->hasMany('Types', [
代码语言:javascript
复制
        'foreignKey' => 'user_id', 'targetForeignKey' => 'type_id',
代码语言:javascript
复制
    'joinTable' => 'types_users']);
代码语言:javascript
复制
}```
代码语言:javascript
复制
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-02 05:52:42

为了使" belongsToMany“关联在此实例中工作,两个*Table.php文件必须具有作为belongsToMany列出的关系。不要忘记在实体中也可以访问字段。

还需要将关联数组放置在patchEntity函数中的RegisterBehavior.php文件中。

UserTable.php (在CakeDC用户中)

代码语言:javascript
复制
public function initialize(array $config): void
    {
        ...
        $this->belongsToMany('Types', [
            'foreignKey' => 'user_id', 'targetForeignKey' => 'type_id',
        'joinTable' => 'types_users']);
    }

TypesTable.php (应用程序)

代码语言:javascript
复制
class TypesTable extends Table
{
    public function initialize(array $config): void
    {
       ....
        $this->belongsToMany('Users');
        $this->belongsTo('Languages', [
            'foreignKey' => 'language_id',
            'joinType' => 'INNER',
        ]);
    }

RegisterBehavior.php

代码语言:javascript
复制
$user = $this->_table->patchEntity(
            $user,
            $data,
            ['validate' => $validator ?: $this->getRegisterValidators($options), 'associated' => ['Types']]
        );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71280151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档