【发布时间】:2017-03-19 18:36:00
【问题描述】:
我的代码基于此代码Stackoverflow。
我有 3 个导航表(这是迁移):
Schema::create('navigation_positions', function (Blueprint $table) {
$table->increments('id');
$table->string('slug')->unique();
});
Schema::create('navigation', function (Blueprint $table) {
$table->increments('id');
$table->string('slug')->unique();
$table->string('icon')->nullable();
$table->string('url')->nullable();
$table->integer('sort')->nullable()->default(NULL);
$table->integer('parent_id')->unsigned()->nullable();
$table->integer('position_id')->unsigned();
$table->timestamps();
$table->foreign('position_id')->references('id')->on('navigation_positions')
->onDelete('restrict');
});
Schema::create('navigation_translate', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->integer('navigation_id')->unsigned();
$table->integer('language_id')->unsigned();
$table->timestamps();
$table->foreign('navigation_id')->references('id')->on('navigation')
->onDelete('cascade');
$table->foreign('language_id')->references('id')->on('languages')
->onDelete('restrict');
});
我会将记录插入navigation,因为我的网站是多语言的(language_id 存储在language 会话中)我会将翻译的语言存储在navigation_translate。
我想根据我的language_id和navigation_positions.slug从navigation_translate中选择正确的记录。
例如这是我的记录:
navigation_positions:
["id" => 1, "slug" => "admin-sidebar"]
navigation_translate:
["id" => 1, "title" => "User Management", "navigation_id" => 1, "language_id" => 1]
我想用language_id = 1选择admin-sidebar位置的所有父母和孩子
【问题讨论】: