Constants

NUMBER_OF_DIGITS

NUMBER_OF_DIGITS = '8' : array

桁数

SORT_KEY_PREFIX

SORT_KEY_PREFIX = '~' : array

ソートキーのプレフィクス

SORT_KEY_SEPARATOR

SORT_KEY_SEPARATOR = '-' : array

ソートキーのプレフィクス

Properties

$errors

$errors : array

Errors

Type

array

$_defaults

$_defaults : array

デフォルト値

Type

array

$_escapeFields

$_escapeFields : array

エスケープしたカラム名

Type

array

Methods

setup()

setup(\Model  $model, array  $config = array()) : void

TreeBehaviorのセットアップ

Parameters

\Model $model

使用するModel

array $config

設定値

beforeSave()

beforeSave(\Model  $model, array  $options = array()) : boolean

保存する前に呼び出されるメソッド

parentフィールドが$model->dataに含まれている場合にのみ、 tree用に$model->dataのweight,child_count,sort_keyをセットし、 また、親、子をのweight,child_count,sort_keyを更新する。

CakePHPのTreeBehaviorと異なる点

lft,rghtが$model->dataにセットしてあったものをそのまま

Parameters

\Model $model

呼び出し元のModel

array $options

Model::save()から渡されるオプション

Returns

boolean

beforeDelete()

beforeDelete(\Model  $model, boolean  $cascade = true) : boolean

Stores the record about to be deleted.

This is used to delete child nodes in the afterDelete.

Parameters

\Model $model

Model using this behavior.

boolean $cascade

If true records that depend on this record will also be deleted

Returns

boolean

afterDelete()

afterDelete(\Model  $model) : boolean

After delete method.

Will delete the current node and all children using the deleteAll method and sync the table

Parameters

\Model $model

Model using this behavior

Throws

\InternalErrorException

Returns

boolean —

true to continue, false to abort the delete

childCount()

childCount(\Model  $model, integer|string|boolean  $id = null, boolean  $direct = false) : integer

子ノードの数を取得するメソッド

children メソッドと同様に、 childCount には列の主キー (id) の値を 渡します。 これにより主キーが指定されたノードの子の数が返されます。オプションの 第二引数では、 直下の子ノードのみの数を返すか否かを定義できます。

Parameters

\Model $model

呼び出し元のModel

integer|string|boolean $id

検索するためのレコードのID

boolean $direct

直下のノードのみを返すために true を設定します

Returns

integer —

指定されたノードの子の数

children()

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)の値を用いて、そのアイテムの子を返します。 デフォルトの順番はツリーに出現した順です。 第二引数はオプションのパラメータで、 直下の子ノードのみを返すか否かを定義します。

CakePHPのTreeBehaviorと異なる点

$limit, $pageについては、CakePHPのTreeBehaviorでは、取得するデータ全体に対するものであるが、 本メソッドでは、子に対するものとする。

Parameters

\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

再帰的に関連付けられたモデルの深さのレベル数

Returns

array —

アイテムの子のデータ

formatTreeList()

formatTreeList(\Model  $model, array  $results, array  $options = array()) : array

spacer オプションで指定された ネストしたプレフィックスをつけて find(『list』) と似たデータを返すメソッド

独自のfind()呼び出しを使用する場合、generateTreeList()を直接使用するのと同じ結果を生成するために、 "sort_key asc"でソートする必要があることに注意してください。

オプション($options):

  • 'keyPath': キーの文字列パス。例: 「{n}.Post.id」
  • 'valuePath': 値の文字列パス。例: 「{n}.Post.title」
  • 'spacer': 繰り返しの文字または文字列

Parameters

\Model $model

呼び出し元のModel

array $results

find(『all』) の実行結果

array $options

設定するオプション配列

Returns

array

generateTreeList()

generateTreeList(\Model  $model, string|array  $conditions = null, string  $keyPath = null, string  $valuePath = null, string  $spacer = '_', integer  $recursive = null) : array

spacerオプションで指定したプレフィックスでインデントを付け構造が分かるようにした find(『list』) に似たデータを返すメソッド

CakePHPのTreeBehaviorと異なる点

$keyPathと$valuePathは、複雑なものには対応しない。必ず、{n}.Post.idのような構成にすること。

Parameters

\Model $model

呼び出し元のModel

string|array $conditions

find()と同様の検索条件オプションに使用

string $keyPath

キーとして使用するフィールドのパス。例: 「{n}.Post.id」

string $valuePath

ラベルに使用するフィールドのパス。例: 「{n}.Post.title」

string $spacer

各々の値の前に付ける深さを示すための文字列

integer $recursive

関連付けられたレコードを取得する際の深さのレベル数

Returns

array

getLevel()

getLevel(\Model  $model, integer|string|null  $id = null) : integer|boolean

特定のノードのレベルを取得するメソッド

Parameters

\Model $model

呼び出し元のModel

integer|string|null $id

ID

Returns

integer|boolean

getParentNode()

getParentNode(\Model  $model, integer|string  $id = null, string|array  $fields = null, integer  $recursive = null) : array|boolean

親ノードを返すメソッド

Parameters

\Model $model

呼び出し元のModel

integer|string $id

読み取るレコードのID

string|array $fields

取得するフィールド

integer $recursive

関連付けられたレコードを取得する際の深さのレベル数

Returns

array|boolean

getPath()

getPath(\Model  $model, integer|string|null  $id = null, string|array|null  $fields = null, integer|null  $recursive = null) : array

トップのノードからたどって階層化されたデータのパス (path) を返すメソッド

Parameters

\Model $model

呼び出し元のModel

integer|string|null $id

読み取るレコードのID

string|array|null $fields

フィールド名

integer|null $recursive

関連付けられたレコードを取得する際の深さのレベル数

Returns

array

moveDown()

moveDown(\Model  $model, integer|string|null  $id = null, integer|boolean  $number = 1) : boolean

ツリーの中で一つのノードを位置を下げるためのメソッド

ノードが最後の子であるか、または後続ノードのない最上位ノードである場合、このメソッドはfalseを返します

Parameters

\Model $model

呼び出し元のModel

integer|string|null $id

移動するレコードのID

integer|boolean $number

ノードを移動する場所の数、または最後の位置に移動する場合はtrue

Returns

boolean —

true on success, false on failure

moveUp()

moveUp(\Model  $model, integer|string|null  $id = null, integer|boolean  $number = 1) : boolean

ツリーの中で一つのノードを位置を上げるためのメソッド

ノードが最初の子である場合、または前のノードを持たない最上位ノードの場合、このメソッドはfalseを返します

Parameters

\Model $model

呼び出し元のModel

integer|string|null $id

移動するレコードのID

integer|boolean $number

ノードを移動する場所の数、または最初の位置に移動する場合はtrue

Returns

boolean —

true on success, false on failure

removeFromTree()

removeFromTree(\Model  $model, integer|string|null  $id = null, boolean  $delete = false) : boolean

ツリーから現在のノードを削除し、すべての子を1レベル上に戻すメソッド

NCでは、当メソッドを使う場面がないため、未対応。 必要になる場面が出てきた際に、対応する

Parameters

\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)

Returns

boolean —

true on success, false on failure

recover()

recover(\Model  $model, string  $mode = 'parent', null  $missingParentAction = null) : boolean

破損したツリーを復元する

Parameters

\Model $model

呼び出し元のModel

string $mode

parentのみ

null $missingParentAction

使用しない

Returns

boolean —

true on success, false on failure

reorder()

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:

  • 'id' id of record to use as top node for reordering
  • 'field' Which field to use in reordering defaults to displayField
  • 'order' Direction to order either DESC or ASC (defaults to ASC)
  • 'verify' Whether or not to verify the tree before reorder. defaults to true.

Parameters

\Model $model

Model using this behavior

array $options

array of options to use in reordering.

Returns

boolean —

true on success, false on failure

verify()

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)

Parameters

\Model $model

Model using this behavior

Returns

mixed —

true if the tree is valid or empty, otherwise an array of (error type [index, node], [incorrect left/right index,node id], message)

migration()

migration(\Model  $model, array  $cakeFileds = array('left' => 'lft', 'right' => 'rght')) : boolean

CakeのTreeビヘイビアからNC用のTreeビヘイビアのデータ構成にマイグレーションする

Parameters

\Model $model

Model using this behavior

array $cakeFileds

CakeTreeのため

Throws

\InternalErrorException

Returns

boolean

_getMaxWeight()

_getMaxWeight(\Model  $model, integer|string  $parentId) : integer

指定した親IDの最大weightを取得する

Parameters

\Model $model

呼び出し元のModel

integer|string $parentId

親ID

Returns

integer

_convertWeightToSortKey()

_convertWeightToSortKey(integer  $weight, string|boolean  $sortKey = false, boolean  $setKeyIsParent = false) : string

weightからsort_keyに変換する

Parameters

integer $weight

順序

string|boolean $sortKey

ソートキー

boolean $setKeyIsParent

第二引数の$sortKeyが親を指定しているか否か

Returns

string

_updateParentCount()

_updateParentCount(\Model  $model, string  $sortKey, integer  $number, array  $addConditions = array()) : boolean

指定した親のchild_countをカウントUp(Down)する

Parameters

\Model $model

呼び出し元のModel

string $sortKey

ソートキー

integer $number

カウントUP値

array $addConditions

取得する追加条件

Throws

\InternalErrorException

Returns

boolean

_replaceChildSortKey()

_replaceChildSortKey(\Model  $model, string  $sortKey, string  $updateSortKey, array  $conditions) : boolean

指定したsort_keyを持つ子たちを新しいsort_keyに変更する

Parameters

\Model $model

呼び出し元のModel

string $sortKey

ソートキー

string $updateSortKey

更新するソートキー

array $conditions

条件配列

Throws

\InternalErrorException

Returns

boolean

_incrementWeight()

_incrementWeight(\Model  $model, integer|string  $parentId, string  $order, integer  $from, integer|null  $to, integer  $number) : integer

指定した親IDの最大weightを取得する

Parameters

\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

インクリメントする値

Throws

\InternalErrorException

Returns

integer

_getById()

_getById(\Model  $model, integer|string  $id) : array|boolean

データを取得するメソッド

Parameters

\Model $model

呼び出し元のModel

integer|string $id

取得するID

Returns

array|boolean

_getChildIds()

_getChildIds(\Model  $model, array  $target) : array

データを取得するメソッド

Parameters

\Model $model

呼び出し元のModel

array $target

対象のデータ

Returns

array

_getOptions()

_getOptions(array  $arg) : array

連想配列の場合、$argからデフォルトのfind()オプションを作成するメソッド

Parameters

array $arg

Array

Returns

array —

Options array

_move()

_move(\Model  $model, string  $type, integer|string|null  $id, integer|boolean  $number) : boolean

ツリーの中で一つのノードを位置を下げるためのメソッド

ノードが最後の子であるか、または後続ノードのない最上位ノードである場合、このメソッドはfalseを返します

Parameters

\Model $model

呼び出し元のModel

string $type

移動種別("up" or "down")

integer|string|null $id

移動するレコードのID

integer|boolean $number

ノードを移動する場所の数、または最後の位置に移動するための条件

Throws

\InternalErrorException

Returns

boolean —

true on success, false on failure

__countUpForRecover()

__countUpForRecover(  $recovers, integer  $parentId) : void

子供の件数のUP

Parameters

$recovers
integer $parentId

親ID

__updateRecovers()

__updateRecovers(\Model  $model, array  $recovers) : boolean

CakeのTreeビヘイビアからNC用のTreeビヘイビアのデータ構成にマイグレーションする

Parameters

\Model $model

Model using this behavior

array $recovers

リカバリーデータ

Throws

\InternalErrorException

Returns

boolean