介紹
高效生成系統樹
用於無限級分類
例如:樓中樓評論 獲取下級分類等
只會產生一個sql並且速度非常快
支援
僅支援adjacency結構
例如(classify表id(兒子) pid(父親) )
測試 (只統計生成樹使用的時間)
資料量(條) | 時間(s) | 記憶體(m) |
---|---|---|
756 | 0.022 | 0.83 |
5256 | 0.075 | 2.84 |
11256 | 0.16 | 5.67 |
48843 | 0.883 | 24.63 |
108843 | 1.80 | 52.42 |
傻瓜式一次次查詢
查詢到1 where pid = 1
查詢到2 where pid = 2
查詢到3 where pid = 3
資料量(條) | 時間(s) | 記憶體(m) |
---|---|---|
146 | 0.72 | 2.81 |
646 | 3.01 | 10.84 |
2646 | 13.34 | 42.91 |
安裝
- composer require lyxxxh/lartree
檢視例子(不使用也可以)
1.在app/config.php的providers新增
Xxh\LarModel\LarTreeProvider::class
2. php artisan vendor:publish --provider="Xxh\LarModel\LarTreeProvider::class"
3. 匯入user 下面附資料庫 (我測試的資料庫)
生成樹使用方法(可參考vendor/lyxxxh/lartree/src/LarController.php)
//引入名稱空間
use Xxh\LarTree\Services\LarTreeServices;
class LarController extends Controller {
use LarTree; //使用LarTree
public function index()
{
//設定需要的欄位 為了更快速 不設定也可以
$this->setField(['id','pid','name']);
//預設是id pid
// $this->setFatherSonName('子id','父id');
//設定表 把查詢到的所有結果先存到$datas變數
$this->initTableConainer('users');
//最開始的父id
$data = $this->getTableTree(0);
dd($data);//獲取樹結構了
}
}
自定義
vendor/lyxxxh/lartree/src/LarTree.php使用trait
根據需求重寫裡面的所有方法(看原始碼)
例如獲取文章的評論
你完全可以複製程式碼 然後重寫setDataContainer($data)
擴充套件原始碼
本作品採用《CC 協議》,轉載必須註明作者和本文連結