Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Yii外键_Mysql_Yii_Foreign Keys - Fatal编程技术网

Mysql Yii外键

Mysql Yii外键,mysql,yii,foreign-keys,Mysql,Yii,Foreign Keys,我有两个在MySQL中设置了1对多关系的表。我使用Gii生成模型和CRUD 如果我尝试输入一个实际上不是另一个表的外键的外键值,Yii是否默认创建一条规则和默认错误消息 我在《彝族书》中看到了这一段,这或许可以回答我的问题 “{TIP}‘exists’验证器也需要这些关系 它确认此表中的外键值作为 另一个中的主键。“ 那么我是否需要编写“存在”验证程序?默认情况下,不会创建与外键相关的验证规则 但是,如果数据库出现外键冲突错误,Yii将生成一条错误消息(CDBEException)。Yii将创建

我有两个在MySQL中设置了1对多关系的表。我使用Gii生成模型和CRUD

如果我尝试输入一个实际上不是另一个表的外键的外键值,Yii是否默认创建一条规则和默认错误消息

我在《彝族书》中看到了这一段,这或许可以回答我的问题

“{TIP}‘exists’验证器也需要这些关系 它确认此表中的外键值作为 另一个中的主键。“


那么我是否需要编写“存在”验证程序?

默认情况下,不会创建与外键相关的验证规则


但是,如果数据库出现外键冲突错误,Yii将生成一条错误消息(CDBEException)。

Yii将创建您可以在模型中找到的默认规则

public function rules()
    {
        // NOTE: you should only define rules for those attributes that
        // will receive user inputs.
        return array(
            array('primaryEmail, password, creationTime, IPAddress, isBusiness, forgotPassTime, aboutMe, fname, lname', 'required'),

        );
    }
public function relations()
    {
return array(
            'articles' => array(self::HAS_MANY, 'Article', 'authorId'),
}
您还可以为验证提供自定义消息

例如,它还提供了它的默认关系

public function rules()
    {
        // NOTE: you should only define rules for those attributes that
        // will receive user inputs.
        return array(
            array('primaryEmail, password, creationTime, IPAddress, isBusiness, forgotPassTime, aboutMe, fname, lname', 'required'),

        );
    }
public function relations()
    {
return array(
            'articles' => array(self::HAS_MANY, 'Article', 'authorId'),
}

当您说默认情况下不创建验证规则时。您的意思是在模型中的函数规则()中?因为这会获取规则,就像我在MYSQL中指定一个字段是必需的一样。是的。例如,数组('user\u id,nick\u name','required')。但是,如果我尝试创建一个记录,而外键与数据库中现有的记录不匹配,它会抛出一条丑陋的错误消息CDbException CDbCommand无法执行SQL语句:SQLSTATE[23000]:完整性约束冲突:1452无法添加或更新子行:外键约束失败,这就是我的意思。如果创建的字段不为NULL,则将获得“必需”规则,但决不会获得与fk相关的规则。这意味着验证将通过,并且由于约束冲突,您将得到一个CDBEException。非常感谢。这回答了我的问题。MT!尽管对Yii来说,开箱即用似乎不是一件好事吗?CExistValidator验证属性值是否存在于表中。像这样的?我认为Yii会处理这些类型的错误,因为我在数据库b4中使用Gii建立了关系来生成模型和CRUD。在过去,我总是使用外键作为值的下拉列表,没有注意到看到错误消息的可能性。