winponta/treevel

此包已被废弃,不再维护。未建议替代包。
此包最新版本(0.3.0)没有可用的许可证信息。

一组用于处理Laravel Eloquent模型中树层次结构的类和特质

0.3.0 2017-12-20 19:15 UTC

This package is auto-updated.

Last update: 2022-05-08 08:55:02 UTC


README

安装

  1. 在您的composer.json文件中添加此包,并运行composer install(或直接运行composer require winponta/treevel

    "winponta/treevel": "0.*"

  2. 运行copmposer

    composer update

使用

使用此包的特质之一使您的模型能够处理树层次结构记录(目前只提供Parent树模型)。

Parent树模型

Parent树模型使用parent id引用来处理。

特质

<?php
    ...
    class MyModel extends Eloquent {
        use \Winponta\Treevel\Traits\ParentTreeModel;

默认属性

父主键(parentIdField)

此属性用于解析父表的主键。如果为null,则使用Eloquent primaryKey模型属性。您可以通过在模型的__constructot中调用setParentIdField方法来自定义数据库字段名称来更改此值。

<?php
    ...
    class MyModel extends Eloquent {
        use \Winponta\Treevel\Traits\ParentTreeModel;

        public function __construct() {
            $this->setParentIdField( 'pk_on_parent_table' );
        }
父引用(parentField)

包默认使用的字段名称用于处理对父记录的引用值是parent_id,您可以通过在模型的__constructot中调用setParentField方法来自定义数据库字段名称来更改此值。

<?php
    ...
    class MyModel extends Eloquent {
        use \Winponta\Treevel\Traits\ParentTreeModel;

        public function __construct() {
            $this->setParentField( 'my_father_id' );
        }
节点级别属性(levelField)

此属性控制节点在树中的深度级别。默认字段值用于处理此功能的是node_level,您可以通过在模型的__constructot中调用setLevelField方法来自定义数据库字段名称来更改此值。

<?php
    ...
    class MyModel extends Eloquent {
        use \Winponta\Treevel\Traits\ParentTreeModel;

        public function __construct() {
            $this->setLevelField( 'depth' );
        }

检索树

getTree

以Eloquent Collection的形式从数据库返回完整树

  • $options - 一个数组,包含在恢复后代时应用的选择
 * where => [key, value] - recover only descendants the key matches the value