2017-11-20 19 views
0

このIDは、毎日の初日に1-66-0001のように表示されます。今、私は最後の4桁を1ずつ増やす方法を知りたい。次のIDは1-66-00021-66-0003で、私のhtmlテーブルの最後の4桁を表示する必要があります(idは `` 1-66-0001`データベースに入りますが)私のコードでは、私はそれを得ていません。データベースのコントローラのIDを増やす

コントローラ

if (!empty($invoice) && $invoice->created_at->toDateString() == $today->toDateString()) 
{ 
    $today_invoice = $invoice + 1; 
} else { 
    $today_invoice = $id . '-' . $date . '-0001'; 
} 
+0

データベース内のこのようなカウンタを維持することは、私にとって本当の苦痛のように思えます。あなたが照会する時にそのIDを生成する代わりにあなたに開放されますか?日付が与えられれば、4桁のIDなどを構築できます。 –

+0

@TimBiegeleisen確かに。インクリメンタルな4桁のIDをどのように構築するのですか? – XamarinDevil

+0

@XamarinDevil - あなたの不足を修正しました。 $ today_invoice = $ invoice + 1 – TimBrownlaw

答えて

3

私は、2つの「ID」フィールドを使用する方がよいと思う:私はそれが持つ主キーとしてIDを使用するために適切なデータベース設計だとは思わないので、データベースの実際のIDとIDをそのような長さとフォーマット。 ので:ID(PK):int型(11) RealId(非クラスタ化インデックス):VARCHAR(10)

それはあなたが最後のID番号とデータベースに入力、それを測定することができ、文字列の書式設定機能を使用して、文字列だとして。

また、実IDからの "0001"と主キーからの "1"が等しい場合、あなたのリアルIDでそれを使用してください

それが20なら - >あなたは最後の4桁が0020などであることを知っています。

+0

私のrealIDは毎日リセットする必要があります。衝突はないでしょうか? – XamarinDevil

+0

「リセット」の意味は? 今日は月曜日、現実は1-66-0001の場合 明日はどうなるでしょうか? –

+0

明日は1-67-0001になります。これは、その日に作成された請求書の数を知るのに役立ちます。「67」はその年の日です。 – XamarinDevil

関連する問題