Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zbuduj drzewo ze struktury tabeli parent_id id

Wreszcie znalazłem rozwiązanie, które pasuje do moich potrzeb! Dziękuję wszystkim za wszelką pomoc, a także za konstruktywną krytykę :)

Laravel 4 - Elokwentny. Nieskończone dzieci w użytecznej tablicy?

Rozwiązanie:

<?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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd sql:Konwersja typu danych varchar na typ danych data/godzina skutkowała wartością spoza zakresu

  2. Błąd PDO:Nieprawidłowy numer parametru:parametr nie został zdefiniowany

  3. Kolejność oceny instrukcji i przypisania zmiennych w UNIONS MySQL

  4. Przyznawanie praw do dodatkowej bazy danych MySQL powodującej problemy

  5. jak utworzyć wyzwalacz aktualizacji dla zwiększenia/zmniejszenia 1 liczby do łącznej liczby głosów