# Model-tree Can be achieved through a `model-tree` to a tree-like components, you can drag the way to achieve the level of data, sorting and other operations, the following is the basic usage. ## Table structure and model To use `model-tree`, you have to follow the convention of the table structure: ```sql CREATE TABLE `demo_categories` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `parent_id` int(11) NOT NULL DEFAULT '0', `order` int(11) NOT NULL DEFAULT '0', `title` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ``` The above table structure has three necessary fields `parent_id`, `order`, `title`, and the other fields are not required. The corresponding model is `app/Models/Category.php`: ```php setParentColumn('pid'); $this->setOrderColumn('sort'); $this->setTitleColumn('name'); } } ``` ## Usage 然后就是在页面中使用`model-tree`了: Then use `model-tree` in your page ```php header('Categories'); $content->body(Category::tree()); }); } } ``` You can modify the display of branch in the following ways: ```php Category::tree(function ($tree) { $tree->branch(function ($branch) { $src = config('admin.upload.host') . '/' . $branch['logo'] ; $logo = ""; return "{$branch['id']} - {$branch['title']} $logo"; }); }) ``` The `$branch` parameter is array of current row data. If you want to modify the query of the model, use the following way: ```php Category::tree(function ($tree) { $tree->query(function ($model) { return $model->where('type', 1); }); }) ```