我有一个名为Invoice
的模型。我已经做了必要CRUD for Invoice model
。发票模型的attributes
与Invoice Title, Invoice No, Invoice Issue Date, Description
类似。现在我想要{{1}这样,用户无需按递增顺序手动填写发票。这是创建页面的图像。
答案 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();