1

我有一个名为的模型Invoice。我已经做了必要的模型CRUD for Invoice modelattributes发票模型就像这样Invoice Title, Invoice No, Invoice Issue Date, Description。现在我希望这样,when a user will redirect to invoice create page,the input field for Invoice No should be automatically filled in the create page with last inserted id +1 and it should have prefix like INV:.So the input field for Invoice No should be like this INV:12.用户不需要按递增顺序手动填写发票。这是创建页面的图像.在此处输入图像描述

4

3 回答 3

2

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

所以你应该用文本插入最后一个发票号码的号码部分+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 不利。第二,如果有人在其间的其他表中插入了一些东西怎么办..第三,如果数据库连接关闭并在两者之间启动怎么办..

于 2012-06-20T18:39:30.090 回答
0

只是一个建议:

如果用户不需要填写发票号码,那么为什么不直接从显示中跳过它。我的意思是在创建时不要显示它。提交表单后,您可以在发票编号旁边显示所有提交的值。

提交表单后,您可以简单地通过 $model -> id 显示发票编号;其中 id 是数据库中的发票编号。

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

希望能帮助到你!

于 2012-06-21T06:36:22.750 回答
0

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

            Yii::app()->db->getLastInsertId();
于 2013-07-23T13:17:05.897 回答