我有一个名为的模型Invoice
。我已经做了必要的模型CRUD for Invoice model
。attributes
发票模型就像这样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.
用户不需要按递增顺序手动填写发票。这是创建页面的图像.
问问题
5966 次
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 回答