如何在Yii创建页面中获取最后一个插入ID

时间:2012-06-20 18:10:03

标签: php yii

我有一个名为Invoice的模型。我已经做了必要CRUD for Invoice model。发票模型的attributesInvoice Title, Invoice No, Invoice Issue Date, Description类似。现在我想要{{1}这样,用户无需按递增顺序手动填写发票。这是创建页面的图像。enter image description here

3 个答案:

答案 0 :(得分:2)

首先==> This is not a good idea to store Invoice number dependent on table's unique id

因此,您应该在文本中插入最后一个发票号码' s号码+ 1

现在首先获取最后一张发票模型,然后找到其发票号并填写该字段..

在控制器..

$model = new Invoice;

$last_invoice = Invoice::model()->find(array('order'=>'id DESC'));
$last_invoice_number = str_replace("INV:", "", $last_invoice->invoice_mumber);
$new_invoice_number = $last_invoice_number+1;

$model->invoice_number = "INV:".$new_invoice_number;

$this->render('create',array('model'=>$model));

修改

无法使用Yii::app()->db->lastInsertId)的原因..

首先,正如我首先说的那样,从表的唯一ID中依赖发票ID并不好......如果有人在其他表中插入声音,如果数据库连接关闭并在两者之间启动,那该怎么办?

答案 1 :(得分:0)

只是一个建议:

如果用户不需要填写发票号,那么为什么不从显示屏中跳过它。我的意思是在创作时不要表现出来。提交表单后,您可以在发票号上显示所有提交的值。

提交表单后,您只需使用$ model - >即可显示发票号。 ID;其中id是数据库中的发票号。

您可以使用发票编号作为数据库中的主要自动增量bigint值。然后在显示时使用INV:前缀。

希望它有所帮助!

答案 2 :(得分:0)

这是在Yii中获取最后一个插入ID的简单方法。

            Yii::app()->db->getLastInsertId();