1

私はと呼ばれるモデルを持っています。Invoice必要に応じて作成しました。請求書モデルの場合は次のようになります。これにより、ユーザーは請求書に手動で入力する必要がなくなります。作成ページの画像は次のとおりです。 .CRUD for Invoice modelattributesInvoice Title, Invoice No, Invoice Issue Date, Descriptionwhen 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

したがって、最後の請求書番号の番号part+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を依存するのは良くありません。2番目に誰かがその間に別のテーブルに何かを挿入した場合はどうなりますか。

于 2012-06-20T18:39:30.090 に答える
0

これは、Yii で最後の挿入 ID を取得する簡単な方法です。

            Yii::app()->db->getLastInsertId();
于 2013-07-23T13:17:05.897 に答える
0

ただの提案:

ユーザーが請求書番号を入力する必要がない場合は、表示からスキップしてください。つまり、作成中に表示しないようにします。フォームが送信されると、請求書番号に沿って送信されたすべての値を表示できます。

フォームが送信されると、$model -> id; で簡単に請求書番号を表示できます。ここで、id はデータベース内の請求書番号です。

請求書番号を、データベース内の主要な自動インクリメント bigint 値として使用できます。次に、表示中に INV: プレフィックスを使用します。

それが役に立てば幸い!

于 2012-06-21T06:36:22.750 に答える