前回に引き続いて、Serial Fieldを使った自動採番です。
前回の自動採番は、単純なインクリメント型(1から1ずつ加算していく方法)でした。しかし、実際の業務システムでは、最初の2桁が事業部コードで、次の2桁が部門コードで、その後はシリアル番号、といった意味ありコードを使うことが多いですね。
そこで、今回は、Seial FieldとComputed Fieldを組み合わせて、Serial Fieldで採番した番号に、さらにComputed Fieldで違うコードを付け足して、意味ありコードを実現する方法のご紹介です。
1.ベースとなる連番フィールドをSerial Fieldで設定します。
設定方法は、前回記事「Serial Field(CCK module) で自動採番」を参照。
2.次に、意味ありコードのために、Computed Fieldを設定します。
設定方法は、以前の記事「Computed Field(CCK module)概要編」を参照。
3.Computed Fieldのコード記述
Computed Code記述例
ここでは、jigyou_codeテーブルから事業コードを変数$jigyouに格納するまでは省略します。
また、1のシリアル番号フィールドは、「serial_no」で定義しているとします。
$serial_no = $node->field_serial_no[0]['value']; $node_field[0]['value'] = sprintf('%02d', $jigyou) ."-" .sprintf('%08d', $serial_no);
これで、事業コード2桁-シリアル番号8桁の自動採番が実現できますね。