Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да създадете управлявано от база данни многостепенно навигационно меню с помощта на Laravel

Така че, след като направих много повече търсене и четене от различни източници, ето какво измислих и работи добре:

/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. Mysqli подготвеният израз num_rows връща 0, докато заявката връща по-голямо от 0

  2. Кое съпоставяне да използвате, така че `ş` и `s` да се третират като уникални стойности?

  3. MySQL MariaDB – Заявка с помощта на Temp Table

  4. MySQL INSERT INTO ... СТОЙНОСТИ и SELECT

  5. Съхранявайте множество реда от mysql база данни в една единствена променлива