我正在尝试使用Laravel 5.5中的3个表和数据透视表制作CRUD ... - 管理员(这是一个带登录系统的用户表) - 部门 - 朗斯 - 郎部门
管理员表格:
Schema::create('admins', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('surname');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
$table->softDeletes();
});
The Sectors表:
Schema::create('sectors', function (Blueprint $table) {
$table->increments('id');
});
Langs表:
Schema::create('langs', function (Blueprint $table) {
$table->increments('id');
$table->string('isocode', 10)->nullable();
$table->string('langname', 80)->nullable();
$table->timestamps();
});
lang_sector表(数据透视表):
Schema::create('lang_sector', function (Blueprint $table) {
$table->integer('lang_id')->index('FK_LANGS');
$table->integer('sector_id')->index('FK_SECTORS');
$table->integer('admin_id')->index('FK_ADMINS');
$table->string('sectorname', 80);
$table->string('sectorshortname', 40)->nullable();
$table->text('sectordescription', 65535)->nullable();
$table->timestamps();
$table->softDeletes();
$table->primary(['lang_id','sector_id','admin_id']);
});
事实上,有关“部门”的所有信息都存储在数据透视表中......
我还在模型中创建了链接(admin,lang,sector):
在郎模型中:
public function sectors(){
return $this->belongsToMany('App\Sector')
->withPivot('sectorname','sectorshortname','sectordescription', 'created_at', 'updated_at', 'deleted_at');
}
在行业模型中:
public function langs(){
return $this->belongsToMany('App\Lang')
->withPivot('sectorname','sectorshortname','sectordescription', 'created_at', 'updated_at', 'deleted_at');
}
public function admin(){
return $this->belongsTo('App\Admin');
}
在管理员:
public function sectors(){
return $this->hasMany('App\Sector');
}
为了显示数据,我使用控制器并准备我的请求:
public function index() {
$langs = Lang::all();
$admins = Admin::all();
$sectors = DB::table('lang_sector')
->join('langs', 'langs.id', '=', 'lang_sector.lang_id')
->join('sectors', 'sectors.id', '=', 'lang_sector.sector_id')
->join('admins', 'admins.id', '=', 'lang_sector.admin_id')
->select(
'sectors.id', 'lang_sector.sector_id','lang_sector.lang_id','lang_sector.admin_id','langs.langname',
'langs.isocode','lang_sector.sectorname','lang_sector.sectorshortname','admins.adminname','admins.adminsurname',
'lang_sector.created_at','lang_sector.updated_at')
->distinct()->orderByRaw('lang_sector.sector_id')->get();
return view('admin.sectors.sectors',compact('sectors', 'langs', 'admins'));
}
从技术上讲,我坚持使用商店方法......
关于create方法,我只需要返回一个视图:
public function create() {
return view('admin.sectors.create');
}
我怀疑存储方法和视图......
public function store(Request $request) {
$this->validate($request, [
'lang_id',
'sector_id',
'admin_id',
'sectorname',
'sectorshortname',
'sectordescription',
]);
$input = $request->all();
Sector::create($input);
Session::flash('flash_message', 'Secteur Ajouté!');
return redirect()->route('sectors.index');
}
我以这种方式获得管理员ID:
<input type="hidden" value="{{Auth::guard('admin')->user()->id}}" >
理想情况下,我希望同时为每个lang创建一个条目... 或者在DB ...中创建与主翻译条目的关系
我正试图找出如何解决这个问题,但不成功...... 谢谢你的帮助