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,如何正确创建新关系?的主要内容,如果未能解决你的问题,请参考以下文章
如何在Marketing Cloud里创建extension field扩展字段
如何在 Today Extension 中显示资产目录中的图像?
Swift Extension 计算变量在协议中声明之前无法正确读取