yii-user extension,如何正确创建新关系?

Posted

技术标签:

【中文标题】yii-user extension,如何正确创建新关系?【英文标题】:yii-user extension, how to create a new relationship properly? 【发布时间】:2013-05-06 16:33:42 【问题描述】:

大家好,感谢阅读,我有小问题,我安装了 yii 用户扩展。 我创建了另一个与用户表有关系的表。 Yii 自动创建了与“用户”表的关系,但是当我尝试使用该关系时,它给了我以下消息;

include(Users.php):打开流失败:没有这样的文件或目录

这可能是因为用户模型不在其他模型中,而是在模块/用户中..... 我怎样才能让它工作? 例如

 array(
            'header' => __('Title'),
            'name' => 'id_employer_contract',
            'value' => '$data->user->username',//user is the name of relationship

        ),

【问题讨论】:

【参考方案1】:

当尝试从 User 模块外部访问 User.php 模型时,该文件尚未导入。

如果您查看 UserModule.php 文件的 init() 方法,您会看到 User.php 文件是通过 user.models.* 语句导入的。

有几种不同的方法可以从系统的其他部分导入此文件:

application.modules.user.models.* 添加到main.php 的导入部分。这将使其在您的应用程序中随处可用 根据 User.php 在代码区域前调用Yii::import('application.modules.user.models.*'); 根据 User.php 在代码区域之前调用Yii::app()->getModule('user');。这将调用 User 模块中的 init() 方法。

【讨论】:

嘿,我尝试实施您的第一个解决方案,这是我得到的错误 Alias "user.models.*" is invalid。确保它指向现有目录或文件。我的导入已经导入了 'application.modules.user.models.*', 'application.modules.user.components.*', 看来我弄错了。模块的别名仅在模块本身被实例化时创建。导入application.modules.user.models.*能解决问题吗? 嘿,不,它不是已经导入的。你还有什么我可以尝试的想法吗? @Gunnit 看起来您的关系正在尝试使用名为 Users.php 的类。应该是User.php,不带“s”。【参考方案2】:

"include(Users.php): failed"

您可以从此更改关系映射(由 Gii 自动生成):

'user' => array(self::BELONGS_TO, 'Users', 'user_id')

到这里:

'user' => array(self::BELONGS_TO, 'User', 'user_id')

这应该可以解决问题。

【讨论】:

【参考方案3】:

在另一个版本的 Yii 中,创建关系时,相应的模型可能是 YumUser 而不是 User,为我完成了这项工作: 'user' => array(self::BELONGS_TO, 'YumUser', 'user_id')

【讨论】:

【参考方案4】:

您遇到的问题是用户的表名被称为“用户”,所以当 yii 为模型生成解决这个问题时,它会将用户模型解析为“用户”但是 yii-user 模块扩展具有模型在名为 User.php 的文件中作为“UserModel” 这意味着本质上名为 Users.php 的文件不存在。

要解决此问题,只需将新模型中的关系更改为'user' => array(self::BELONGS_TO, 'User', 'User'), 而不是'user' => array(self::BELONGS_TO, 'Users', 'User'),

【讨论】:

以上是关于yii-user extension,如何正确创建新关系?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 pathinfo() 返回正确的扩展名?

如何在Marketing Cloud里创建extension field扩展字段

如何在 Today Extension 中显示资产目录中的图像?

Swift Extension 计算变量在协议中声明之前无法正确读取

将正确的路径放入我的 Live Server Web Extension [关闭]

Selenium-Grid:如何使用`user-extensions.js`