我创建了一个允许发布多个语言的表单。在定义了lang之后,我希望用户创建一个默认的“扇区”并保存它......
我有两张桌子:
sectors
id
admin_id
created_at
updated_at
deleted_at
langs
id
langname_fr
langname
....
我可以填写带有字段的数据透视表:
category_lang
lang_id
category_id
catname
catshortname
....
我创建了一个视图:
{!! Form::open( array('route' => 'setup.sectorCreate','method' => 'POST') ) !!}
<fieldset>
<legend>Nom du secteur</legend>
@foreach($langs as $lang)
<div class="form-group m-form__group">
{{ Form::label( 'Nom du secteur en ' . $lang->langname_fr) }}
{{ Form::text('sectname_lang_' . $lang->id, 'Nom du secteur en ' . $lang->langname_fr, [ 'class' => 'form-control m-input' ]) }}
</div>
<div class="form-group m-form__group">
{{ Form::label( 'Nom abrégé du secteur en ' . $lang->langname_fr ) }}
{{ Form::text('sectshortname_lang_' . $lang->id, 'Nom abrégé du secteur en ' . $lang->langname_fr, [ 'class' => 'form-control m-input' ]) }}
</div>
@endforeach
</fieldset>
<fieldset>
<legend>Description du secteur</legend>
@foreach($langs as $lang)
<div class="form-group m-form__group">
{{ Form::label( $lang->langname_fr ) }}
{{ Form::text('sectdescription_lang_' . $lang->id, 'Description du secteur en ' . $lang->langname_fr, [ 'class' => 'form-control m-input' ]) }}
</div>
<div class="form-group m-form__group">
{{ Form::text('sectshortdescription_lang_' . $lang->id, 'Description courte du secteur en ' . $lang->langname_fr, [ 'class' => 'form-control m-input' ]) }}
</div>
<br>
@endforeach
</fieldset>
<div class="col-xs-12 col-sm-12 col-md-12 text-center">
<button type="submit" class="btn btn-primary">Valider</button>
</div>
{!! Form::close() !!}
我还创建了一个方法来保存数据......我必须首先创建一个扇区然后附加我必须插入到数据透视表中的字段值(使用方法attach()):
public function sectorCreate(Request $request) {
// 1. Create a sector
$sector = Sector::create(array(
'admin_id' => Auth::guard('admin')->user()->id,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
));
$sector = Sector::all()->last();
// 2. getting the ID
$sector_id = Sector::all()->last()->id;
// 3. counting published langs
$countLang = Lang::count();
// 4. Getting the datas and inserting into pivot table
for ($i = 1; $i < $countLang; $i++) {
$sector[$i] = $sector->langs()->attach(
['sector_id' => $sector_id],
['lang_id' => $i],
['sectname' => $request->input('sectname_lang_' .$i)],
['sectshortname' => $request->input('sectshortname_lang_' .$i)],
['sectdescription' => $request->input('sectdescription_lang_' .$i)],
['sectshortdescription' => $request->input('sectshortdescription_lang_' .$i)],
['created_at' => Carbon::now()],
['updated_at' => Carbon::now()],
['deleted_at' => NULL]
);
}
$sector = Sector::with('langs')->get();
return dd($sector);
//
//return redirect()->route('admin.home')->with('success', 'it works');
}
不幸的是,我遇到插入数据的问题......
#original: array:18 [▼
"id" => 1
"langname_fr" => "Français"
"langname" => "Français"
"langisocode" => "fr-FR"
"langshortcode" => "fr"
"ismainlanguage" => 1
"created_at" => "2018-04-23 15:09:19"
"updated_at" => "2018-04-23 15:10:07"
"deleted_at" => null
"pivot_sector_id" => 2
"pivot_lang_id" => 1
"pivot_sectname" => null
"pivot_sectshortname" => null
"pivot_sectdescription" => null
"pivot_sectshortdescription" => null
"pivot_created_at" => "2018-04-23 15:47:14"
"pivot_updated_at" => "2018-04-23 15:47:14"
"pivot_deleted_at" => null
]
pivot_sectname,pivot_sectshortname,pivot_sectdescription,pivot_sectshortdescription返回“null” 感谢...
答案 0 :(得分:0)
经过多次研究......我在$ sector_id做了附件...... 我在数组中为其他字段传递值...
for ($i = 1; $i <= $countLang; $i++) {
$insertSector[$i] = $sector->langs()->attach(
$sector_id,
[
'lang_id' => $i,
'sectname' => $request->input('sectname_lang_' .$i),
'sectshortname' => $request->input('sectshortname_lang_' .$i),
'sectdescription' => $request->input('sectdescription_lang_' .$i),
'sectshortdescription' => $request->input('sectshortdescription_lang_' .$i),
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
'deleted_at' => NULL
]
);
}