我有以下表格:
user
- id (PK)
- ...
autoresponder
- id (PK)
- ...
user_autoresponder
- user_id (PK, FK to user.id)
- autoresponder_id (PK, FK to autoresponder.id)
在AutoresponderController中我有
public function actionCreate()
{
$model = new Autoresponder;
if(isset($_POST['Autoresponder']))
{
$model->attributes=$_POST['Autoresponder'];
if($model->save()) {
UserAutoresponder::assignToUsers($model);
$this->redirect(array('myadmin', 'cid'=>$model->category_id));
}
}
$this->render('create',array(
'model'=>$model,
));
}
在UserAutoresponder模型中我有:
public static function assignToUsers($autoresponder)
{
$users = Yii::app()->db->createCommand()
->select('id')
->from(User::tableName())
->where('account_status > 0')
->queryAll();
foreach ($users as $user) {
$ua = UserAutoresponder::model()->findByPk(array(
'user_id'=>$user['id'],
'autoresponder_id'=>$autoresponder->id
));
if (!$ua) {
$t = new UserAutoresponder;
$t->user_id = $user['id'];
$t->autoresponder_id = $autoresponder->id;
$t->save();
}
}
}
当我去创建一个自动回复时,它出错了:
完整性约束违规:1452无法添加或更新子行: 外键约束失败 (
lead-manager
。crm_user_autoresponder
,CONSTRAINTcrm_user_autoresponder_ibfk_2
外键(autoresponder_id
) 参考crm_autoresponder
(id
)ON更新CASCADE ON UPDATE CASCADE)
鉴于已经创建了自动回复并且已经为其分配了一个ID,我正在使用user
表中已有的用户列表,而且我也是检查记录是否存在查询失败的原因?
这适用于我的本地计算机和测试服务器,但不能正常运行。
答案 0 :(得分:0)
autoresponder_id 的约束失败。 检查生产环境中的 $ autoresponder-> id 值:它可能为null。如果是这种情况,那么您的生产数据库不适合您的开发/测试数据库。也许在 autoresponder 表上没有激活PK的自动增量?