私はと呼ばれるモデルを持っています。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.
3 に答える
まず第一に==>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番目に誰かがその間に別のテーブルに何かを挿入した場合はどうなりますか。
これは、Yii で最後の挿入 ID を取得する簡単な方法です。
Yii::app()->db->getLastInsertId();
ただの提案:
ユーザーが請求書番号を入力する必要がない場合は、表示からスキップしてください。つまり、作成中に表示しないようにします。フォームが送信されると、請求書番号に沿って送信されたすべての値を表示できます。
フォームが送信されると、$model -> id; で簡単に請求書番号を表示できます。ここで、id はデータベース内の請求書番号です。
請求書番号を、データベース内の主要な自動インクリメント bigint 値として使用できます。次に、表示中に INV: プレフィックスを使用します。
それが役に立てば幸い!