【发布时间】:2013-10-13 13:22:11
【问题描述】:
在我的 Yii 应用程序中,我有这个关系(产品有很多属性),产品表主键是自动递增的,属性表有外键 product_id 到相关产品。 当我在 yii 中使用事务来保存父级(产品)和子级(属性)时出现错误(product_id 不能为空),这是因为 ($product->id) 在事务中保存后返回 NULL。 这是我的代码:
$transaction = Yii::app()->db->beginTransaction();
try {
$product = new Product;
$product->name = 'name_product';
if ($product->save()) {
$product_attribut = new ProductAtt;
$product_attribut->product_id = $product->id;
$product_attribut->name = 'att_name';
$product_attribut->value = 22;
if (!$product_attribut->save()) {
throw new Exception('fail');
}
} else {
throw new Exception('fail');
}
$transaction->commit();
echo 'success';
} catch (Exception $e) {
$transaction->rollback();
echo $e->getMessage();
}
请在交易中保存此关系的任何想法..谢谢。
【问题讨论】:
-
你试过用
Yii::app()->db->getLastInsertID()代替$product->id吗? -
此方法将返回当前数据库连接的最后一个 id 还是所有连接的全局最后一个 id。如果它返回当前的最后一个 .. 那么我担心 Yii 是否在数据库连接中使用单例模式
-
我有一个类似的代码并且工作得很好。你的问题不在于交易。数据库中是否有任何错误?
标签: php activerecord yii transactions auto-increment