我通过这个例子创建了多级菜单(第一个回复): How to create a database-driven multi-level navigation menu using Laravel
我总是得到空阵列。这是我的数据库结构(数据库的名称也是“结构”)
structure_id和parent_id是相关的。
这是我的代码:
应用/ navigation.php
<?php
namespace App;
use DB;
use Illuminate\Database\Eloquent\Model;
class Navigation extends Model {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'structure';
public function parent() {
return $this->hasOne('structure', 'structure_id', 'parent_id');
}
public function children() {
return $this->hasMany('structure', 'parent_id', 'structure_id');
}
public static function tree() {
return static::with(implode('.', array_fill(0, 4, 'children')))->where('parent_id', '=', NULL)->get();
}
}
和控制器:
应用/ HTTP /控制器/ structurecontroller.php
<?php
namespace App\Http\Controllers\Superuser;
use App\Http\Controllers\Controller;
use App\Navigation;
use App\Structure as Model;
class StructureController extends Controller
{
/**
* Allow only for logged in
* DashboardController constructor.
*/
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
//$model = new Model();
//$items = $model->getStructure();
$items = Navigation::tree();
var_dump($items);exit;
return view('superuser.structure', ['items' => $items]);
}
}
我很确定,我在数据库中有一些数据。那么,那里的问题是什么?我从数据库得到总是空数组。感谢您的帮助
答案 0 :(得分:0)
它可能是您的数据库结构 - 您将./ed.sh line XXX *: syntax error: operand expected (error token is "*")
声明为NOT NULL,默认值为0.在parent_id
函数中,您可以执行以下操作:
tree
我猜测&#34; 0&#34;没有像你想象的那样解析为NULL。
答案 1 :(得分:0)
//不要忘记添加导入:App \ structure
public function parent() {
return $this->hasOne('App\structure', 'structure_id', 'parent_id');
}