$ request->输入在Laravel 5.5中返回null

时间:2018-04-23 16:10:54

标签: crud laravel-5.5

我创建了一个允许发布多个语言的表单。在定义了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” 感谢...

1 个答案:

答案 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
            ]
        );
    }