sql >> Databáze >  >> RDS >> Mysql

Jak vytvořit databázově řízenou víceúrovňovou navigační nabídku pomocí Laravelu

Takže po mnohem větším hledání a čtení z různých zdrojů jsem přišel na toto a funguje to dobře:

/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. MySQL vytváří syntaxi uložené procedury s oddělovačem

  2. Jak odstranit řádek v oracle

  3. Výsledky skupiny Concat Cut Off

  4. MySQL:Nelze vytvořit/zapsat do souboru '/tmp/#sql_3c6_0.MYI' (Errcode:2) - Co to vůbec znamená?