Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Xây dựng cây từ cấu trúc bảng id parent_id

Cuối cùng đã tìm thấy một giải pháp phù hợp với nhu cầu của tôi! Cảm ơn sự giúp đỡ của tất cả mọi người và cả những lời phê bình mang tính xây dựng :)

Laravel 4 - Eloquent. Trẻ em vô hạn thành mảng có thể sử dụng được?

Giải pháp:

<?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. Thủ tục được lưu trữ mysql chậm hơn 20 lần so với truy vấn tiêu chuẩn

  2. Thứ tự kết quả MySQL được đặt theo giá trị MAX () của bảng khác

  3. Làm cách nào để tránh sử dụng truy vấn MySQL trong vòng lặp While trong PHP

  4. Làm cách nào để lấy ID của các hàng có giá trị MAX và MIN trong SQL

  5. Ràng buộc khóa ngoại MySQL, xóa theo tầng