【问题标题】:How to access foreign key related tables field如何访问外键相关表字段
【发布时间】:2012-11-29 12:10:10
【问题描述】:

我有两个表:

用户

  • 用户名
  • 用户名
  • securityQuestionId

安全问题

  • securityQuestionId
  • 安全问题
  • 用户名

现在在控制器中我正在采取行动=

public function actionCreate(){

     if(isset($_POST['email']))
     {
            $record=User2::model()->find(array(
                'select'=>'userId, securityQuestionId, primaryEmail,password,userId',
                'condition'=>'primaryEmail=:email',
                'params'=>array(':email'=>$_POST['email']))
            );

            if($record===null)
            {
                echo "Email invalid";
            }
            else 
            {
                echo "email exists";
            }
       }
}

所以 $record->securityQuestionId 显示 id。现在我想显示实际的安全问题。在 user2 模型中,我的关系为

securityQuestion'=>array(self::BELONGS_TO, ' Securityquestion', 'securityQuestionId'),

那么我怎样才能显示实际的安全问题。

【问题讨论】:

  • 这里有错字:securityQuestion'=>array(self::BELONGS_TO, ' Securityquestion', 'securityQuestionId'),' Securityquestion' 需要替换为 'SecurityQuestion'。我对你说过很多次了。如果不尝试调试并将结果放在这里。

标签: yii foreign-key-relationship


【解决方案1】:

您的表格有点奇怪: 由于 User 有 securityQuestionId 我们可以认为 User 属于 SecurityQuestion 但您在 SecurityQuestion 中也有 userId 所以 SecurityQuestion 也属于 User。

对我来说,你应该有:

用户

id
username
id_question

安全问题

id
question

在你的模型规则中:

用户

'securityQuestions'=>array(self::BELONGS_TO, 'SecurityQuestion', 'id_user'),

安全问题

'user'=>array(self::HAS_MANY, 'User', 'id_user'),

现在有相关的安全问题:

$model = User::model()->find(...);
//display the related question
$model->securityQuestion->question;

【讨论】:

  • 我们的问题很少,用户很多,一个问题可以分配给多个用户...所以请询问 HAS_MANY 用户和用户 BELONGS_TO 问题。请修正你的答案。
  • 我通过使用查询 $sec=Securityquestion::model()->findByPk($record>securityQuestionId); 得到了 securityQuestion; $qns=$sec->安全问题;但现在我想在用户模型的视图表单中显示这个问题,并想把文本框输入它的答案。用户提交答案后,想从数据库中检查它是否正确。那么如何在用户模型的视图表单中显示这个问题。请帮帮我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
  • 2012-08-23
相关资源
最近更新 更多