NUMBER_OF_DIGITS
NUMBER_OF_DIGITS = '8' : array
桁数
NetCommons用TreeBehavior
CakePHPのTreeビヘイビアが大量データにあるとパフォーマンスが悪いので、 NetCommons用にTreeビヘイビアを改良する
beforeSave(\Model $model, array $options = array()) : boolean
保存する前に呼び出されるメソッド
parentフィールドが$model->dataに含まれている場合にのみ、 tree用に$model->dataのweight,child_count,sort_keyをセットし、 また、親、子をのweight,child_count,sort_keyを更新する。
lft,rghtが$model->dataにセットしてあったものをそのまま
\Model | $model | 呼び出し元のModel |
array | $options | Model::save()から渡されるオプション |
beforeDelete(\Model $model, boolean $cascade = true) : boolean
Stores the record about to be deleted.
This is used to delete child nodes in the afterDelete.
\Model | $model | Model using this behavior. |
boolean | $cascade | If true records that depend on this record will also be deleted |
afterDelete(\Model $model) : boolean
After delete method.
Will delete the current node and all children using the deleteAll method and sync the table
\Model | $model | Model using this behavior |
true to continue, false to abort the delete
childCount(\Model $model, integer|string|boolean $id = null, boolean $direct = false) : integer
子ノードの数を取得するメソッド
children メソッドと同様に、 childCount には列の主キー (id) の値を 渡します。 これにより主キーが指定されたノードの子の数が返されます。オプションの 第二引数では、 直下の子ノードのみの数を返すか否かを定義できます。
\Model | $model | 呼び出し元のModel |
integer|string|boolean | $id | 検索するためのレコードのID |
boolean | $direct | 直下のノードのみを返すために true を設定します |
指定されたノードの子の数
children(\Model $model, integer|string $id = null, boolean $direct = false, string|array $fields = null, string $order = null, integer $limit = null, integer $page = 1, integer $recursive = null) : array
列の主キー(id)の値を用いて、そのアイテムの子を返すメソッド
メソッドは列の主キー(id)の値を用いて、そのアイテムの子を返します。 デフォルトの順番はツリーに出現した順です。 第二引数はオプションのパラメータで、 直下の子ノードのみを返すか否かを定義します。
$limit, $pageについては、CakePHPのTreeBehaviorでは、取得するデータ全体に対するものであるが、 本メソッドでは、子に対するものとする。
\Model | $model | 呼び出し元のModel |
integer|string | $id | 検索するためのレコードのID |
boolean | $direct | 直下のノードのみを返すために true を設定します |
string|array | $fields | 戻り値に含まれるフィールド名の文字列またはフィールドの配列 |
string | $order | ORDER BY の SQL 文字列 |
integer | $limit | SQL の LIMIT 構文 |
integer | $page | ページつけられた結果にアクセスするための引数 |
integer | $recursive | 再帰的に関連付けられたモデルの深さのレベル数 |
アイテムの子のデータ
formatTreeList(\Model $model, array $results, array $options = array()) : array
spacer オプションで指定された ネストしたプレフィックスをつけて find(『list』) と似たデータを返すメソッド
独自のfind()呼び出しを使用する場合、generateTreeList()を直接使用するのと同じ結果を生成するために、 "sort_key asc"でソートする必要があることに注意してください。
オプション($options):
\Model | $model | 呼び出し元のModel |
array | $results | find(『all』) の実行結果 |
array | $options | 設定するオプション配列 |
generateTreeList(\Model $model, string|array $conditions = null, string $keyPath = null, string $valuePath = null, string $spacer = '_', integer $recursive = null) : array
spacerオプションで指定したプレフィックスでインデントを付け構造が分かるようにした find(『list』) に似たデータを返すメソッド
$keyPathと$valuePathは、複雑なものには対応しない。必ず、{n}.Post.idのような構成にすること。
\Model | $model | 呼び出し元のModel |
string|array | $conditions | find()と同様の検索条件オプションに使用 |
string | $keyPath | キーとして使用するフィールドのパス。例: 「{n}.Post.id」 |
string | $valuePath | ラベルに使用するフィールドのパス。例: 「{n}.Post.title」 |
string | $spacer | 各々の値の前に付ける深さを示すための文字列 |
integer | $recursive | 関連付けられたレコードを取得する際の深さのレベル数 |
getParentNode(\Model $model, integer|string $id = null, string|array $fields = null, integer $recursive = null) : array|boolean
親ノードを返すメソッド
\Model | $model | 呼び出し元のModel |
integer|string | $id | 読み取るレコードのID |
string|array | $fields | 取得するフィールド |
integer | $recursive | 関連付けられたレコードを取得する際の深さのレベル数 |
getPath(\Model $model, integer|string|null $id = null, string|array|null $fields = null, integer|null $recursive = null) : array
トップのノードからたどって階層化されたデータのパス (path) を返すメソッド
\Model | $model | 呼び出し元のModel |
integer|string|null | $id | 読み取るレコードのID |
string|array|null | $fields | フィールド名 |
integer|null | $recursive | 関連付けられたレコードを取得する際の深さのレベル数 |
moveDown(\Model $model, integer|string|null $id = null, integer|boolean $number = 1) : boolean
ツリーの中で一つのノードを位置を下げるためのメソッド
ノードが最後の子であるか、または後続ノードのない最上位ノードである場合、このメソッドはfalseを返します
\Model | $model | 呼び出し元のModel |
integer|string|null | $id | 移動するレコードのID |
integer|boolean | $number | ノードを移動する場所の数、または最後の位置に移動する場合はtrue |
true on success, false on failure
moveUp(\Model $model, integer|string|null $id = null, integer|boolean $number = 1) : boolean
ツリーの中で一つのノードを位置を上げるためのメソッド
ノードが最初の子である場合、または前のノードを持たない最上位ノードの場合、このメソッドはfalseを返します
\Model | $model | 呼び出し元のModel |
integer|string|null | $id | 移動するレコードのID |
integer|boolean | $number | ノードを移動する場所の数、または最初の位置に移動する場合はtrue |
true on success, false on failure
removeFromTree(\Model $model, integer|string|null $id = null, boolean $delete = false) : boolean
ツリーから現在のノードを削除し、すべての子を1レベル上に戻すメソッド
NCでは、当メソッドを使う場面がないため、未対応。 必要になる場面が出てきた際に、対応する
\Model | $model | Model using this behavior |
integer|string|null | $id | The ID of the record to remove |
boolean | $delete | whether to delete the node after reparenting children (if any) |
true on success, false on failure
reorder(\Model $model, array $options = array()) : boolean
Reorder method.
Reorders the nodes (and child nodes) of the tree according to the field and direction specified in the parameters. This method does not change the parent of any node.
Requires a valid tree, by default it verifies the tree before beginning.
Options:
\Model | $model | Model using this behavior |
array | $options | array of options to use in reordering. |
true on success, false on failure
verify(\Model $model) : mixed
Check if the current tree is valid.
Returns true if the tree is valid otherwise an array of (type, incorrect left/right index, message)
\Model | $model | Model using this behavior |
true if the tree is valid or empty, otherwise an array of (error type [index, node], [incorrect left/right index,node id], message)
_updateParentCount(\Model $model, string $sortKey, integer $number, array $addConditions = array()) : boolean
指定した親のchild_countをカウントUp(Down)する
\Model | $model | 呼び出し元のModel |
string | $sortKey | ソートキー |
integer | $number | カウントUP値 |
array | $addConditions | 取得する追加条件 |
_replaceChildSortKey(\Model $model, string $sortKey, string $updateSortKey, array $conditions) : boolean
指定したsort_keyを持つ子たちを新しいsort_keyに変更する
\Model | $model | 呼び出し元のModel |
string | $sortKey | ソートキー |
string | $updateSortKey | 更新するソートキー |
array | $conditions | 条件配列 |
_incrementWeight(\Model $model, integer|string $parentId, string $order, integer $from, integer|null $to, integer $number) : integer
指定した親IDの最大weightを取得する
\Model | $model | 呼び出し元のModel |
integer|string | $parentId | 親ID |
string | $order | SQLのorder by |
integer | $from | SQLのBETWEENのFrom |
integer|null | $to | SQLのBETWEENのTo。nullの場合、$from以降全て |
integer | $number | インクリメントする値 |
_move(\Model $model, string $type, integer|string|null $id, integer|boolean $number) : boolean
ツリーの中で一つのノードを位置を下げるためのメソッド
ノードが最後の子であるか、または後続ノードのない最上位ノードである場合、このメソッドはfalseを返します
\Model | $model | 呼び出し元のModel |
string | $type | 移動種別("up" or "down") |
integer|string|null | $id | 移動するレコードのID |
integer|boolean | $number | ノードを移動する場所の数、または最後の位置に移動するための条件 |
true on success, false on failure