Php yii空外键

Php yii空外键,php,sql,yii,foreign-keys,Php,Sql,Yii,Foreign Keys,我有这样的db结构(我不能在这里添加图片) 有些地址没有metro(其他表也有相同的问题,例如“user”可能没有地址,但“user”表中有约束) 如果我在mysql中添加一条记录,就可以了。如果我使用yii做同样的事情,我会得到一个错误 无法添加或更新子行:外键约束失败(address,约束fk\u address\u Area1外键(area\u id)引用area(id)更新无操作) 那么,有什么问题吗?这是因为您的关系不允许列中的NULL值。您必须编辑特定列,并选中空复选框。然后MySQ

我有这样的db结构(我不能在这里添加图片)

有些地址没有metro(其他表也有相同的问题,例如“user”可能没有地址,但“user”表中有约束)

如果我在mysql中添加一条记录,就可以了。如果我使用yii做同样的事情,我会得到一个错误

无法添加或更新子行:外键约束失败(
address
,约束
fk\u address\u Area1
外键(
area\u id
)引用
area
id
)更新无操作)


那么,有什么问题吗?

这是因为您的关系不允许列中的
NULL
值。您必须编辑特定列,并选中
复选框。然后MySQL将允许
NULL
值。

由于如下所述的原因,可能会发生此错误
1.fk和pk的数据类型可能不同。
2.fk和pk的大小可能不同
3.类型可能不同,如无符号、二进制、无符号二进制和null

4.您试图在城市中输入的值没有出现在面积表中

我检查了每个项目。不幸的是,这没有帮助。我允许每个列为null,但id为。直接执行sql查询没有问题。但是yii返回了错误,我有这个。或者你需要别的什么?更新
address
SET
id
=:yp0,
country\u id
=:yp1,
area\u id
=:yp2,
city\u id
=:yp3,
metro\u id
=:yp4,
地址
老年司机
地址
id
='8'不,实际上我的意思是请张贴您保存模型的代码。无论您是使用yii分配还是使用$\u POST['attributeName']自定义分配。因为如果查询在phpMyAdmin中运行良好,那么它也应该在yii查询中工作。因为yii还将查询和参数转换为与mySql兼容的查询和参数样式。你的作业应该有问题。当您在PhpMyAdmin中运行直接查询时,您会检查它的精确值,但当您通过yii运行它时,有时会存在不需要的值。您还需要检查模型中的值是否正确。谢谢您的帮助。我发现了问题所在。Yii将空值作为“”而不是NULL发送。我已经在规则中添加了这个
setOnEmpty'=>true,'value'=>null
,现在它可以像我想象的那样工作了,所以显示模型规则将对您有很大帮助!