Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara membuat menu navigasi multi-level berbasis database menggunakan Laravel

Jadi setelah melakukan lebih banyak pencarian dan membaca dari berbagai sumber, inilah yang saya temukan dan berfungsi dengan baik:

/app/models/Navigation.php

<?php

class Navigation extends Eloquent {

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'navigation';

    public function parent() {

        return $this->hasOne('navigation', 'id', 'parent_id');

    }

    public function children() {

        return $this->hasMany('navigation', 'parent_id', 'id');

    }  

    public static function tree() {

        return static::with(implode('.', array_fill(0, 4, 'children')))->where('parent_id', '=', NULL)->get();

    }

}

/app/controllers/HomeController.php

<?php

class HomeController extends BaseController {

    protected $layout = "layouts.main";

    public function showWelcome()
    {

        $items = Navigation::tree();

        $this->layout->content = View::make('layouts.home.index')->withItems($items);

    }

}

/app/views/layouts/home/index.blade.php

<ul>
    @foreach($items as $item)
        <li>{{ $item->title }}
            @foreach($item['children'] as $child)
            <li>{{ $child->title }}</li>
            @endforeach
        </li>
    @endforeach
</ul>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. C# dengan parameter MySQL INSERT

  2. Bisakah saya menggunakan batasan kunci asing yang sama di dua tabel berbeda?

  3. Bagaimana mysql memesan baris dengan nilai yang sama?

  4. WooCommerce:Menemukan produk di database

  5. MySQL - nilai pengurangan otomatis