sql >> データベース >  >> RDS >> Mysql

parent_ididテーブル構造からツリーを構築します

    ついに私のニーズに合った解決策を見つけました!皆さまのご協力と建設的な批判に感謝します:)

    Laravel4-雄弁。無限の子を使用可能な配列に入れますか?

    解決策:

    <?php
    
    class ItemsHelper {
    
        private $items;
    
        public function __construct($items) {
          $this->items = $items;
        }
    
        public function htmlList() {
          return $this->htmlFromArray($this->itemArray());
        }
    
        private function itemArray() {
          $result = array();
          foreach($this->items as $item) {
            if ($item->parent_id == 0) {
              $result[$item->name] = $this->itemWithChildren($item);
            }
          }
          return $result;
        }
    
        private function childrenOf($item) {
          $result = array();
          foreach($this->items as $i) {
            if ($i->parent_id == $item->id) {
              $result[] = $i;
            }
          }
          return $result;
        }
    
        private function itemWithChildren($item) {
          $result = array();
          $children = $this->childrenOf($item);
          foreach ($children as $child) {
            $result[$child->name] = $this->itemWithChildren($child);
          }
          return $result;
        }
    
        private function htmlFromArray($array) {
          $html = '';
          foreach($array as $k=>$v) {
            $html .= "<ul>";
            $html .= "<li>".$k."</li>";
            if(count($v) > 0) {
              $html .= $this->htmlFromArray($v);
            }
            $html .= "</ul>";
          }
          return $html;
        }
    }
    



    1. finder_sqlはRailsで文字列を解析しません

    2. MySQL:サーバーのタイムゾーンまたはユーザーのタイムゾーンを維持しますか?

    3. Postgresql:トランザクションの準備

    4. 複数のテーブルを使用したSQL完全外部結合