dongxinche1264 2019-07-24 10:40
浏览 231
已采纳

如何在数据库列中插入类型为string的数组?

I am having multiple checkboxes in my form, and when I select some of them and submit form I get error 'Array to string conversion'. My database column user_preferences is type string so that is the reason of error. I just don't know how to insert multiple values in that column. Any help is appreciated. Here is my code.

UserController.php

public function update(StoreUserInfo $request, User $user)
{
    //return $request->userPreferences;
    if ( !($user->id == Auth::user()->id)) {
        abort(404);
    }

    $request->validated();

    $user->where('id', $user->id)->update(
        [
            'first_name' => $request->first_name,
            'last_name' => $request->last_name,
            'email' => $request->email,
            'city' => $request->city,
            'type' => $request->type,
            'user_preferences' => $request->userPreferences,
            'updated_at' =>  Carbon::now()
        ]
    );
        return redirect()->back()->with('message', 'User information updated');
}

edit.blade.php

<div class="row page-hero d-flex align-items-center justify-content-center">
    <label for="preferences" class="text-center">Select your preferences</label>         
</div>
<div class="row">                
    <div class="col-md-1" style="margin-right:15px; margin-left:60px;">
        <div class="custom-control custom-checkbox">
            <input id="kuca" name="userPreferences[]" value="kuca" type="checkbox" class="custom-control-input">
            <label class="custom-control-label" for="kuca">Kuca</label>
        </div>
    </div>
    <div class="col-md-1" style="margin-right:15px;">
        <div class="custom-control custom-checkbox">
            <input id="stan" name="userPreferences[]" value="stan" type="checkbox" class="custom-control-input">
            <label class="custom-control-label" for="stan">Stan</label>
        </div>
    </div>
    <div class="col-md-1" style="margin-right:50px;">
        <div class="custom-control custom-checkbox">
            <input id="apartman" name="userPreferences[]" value="apartman" type="checkbox" class="custom-control-input">
            <label class="custom-control-label" for="apartman">Apartman</label>
        </div>
    </div>
    <div class="col-md-1" style="margin-right:15px;">
        <div class="custom-control custom-checkbox">
            <input id="soba" name="userPreferences[]" value="soba" type="checkbox" class="custom-control-input">
            <label class="custom-control-label" for="soba">Soba</label>
        </div>
    </div>
    <div class="col-md-1" style="margin-right:15px;">
        <div class="custom-control custom-checkbox">
            <input id="lokal" name="userPreferences[]" value="lokal" type="checkbox" class="custom-control-input">
            <label class="custom-control-label" for="lokal">Lokal</label>
        </div>
    </div>
    <div class="col-md-1" style="margin-right:15px;">
        <div class="custom-control custom-checkbox">
            <input id="plac" name="userPreferences[]" value="plac" type="checkbox" class="custom-control-input">
            <label class="custom-control-label" for="plac">Plac</label>
        </div>
    </div>
    <div class="col-md-1" style="margin-right:15px;">
        <div class="custom-control custom-checkbox">
            <input id="garaza" name="userPreferences[]" value="garaza" type="checkbox" class="custom-control-input">
            <label class="custom-control-label" for="garaza">Garaza</label>
        </div>
    </div>           
</div>
  • 写回答

7条回答 默认 最新

  • dsjgk330337 2019-07-24 10:50
    关注

    You could use php implode() function to join the string array into one string like this:

    $user->where('id', $user->id)->update(
        [
            'first_name' => $request->first_name,
            'last_name' => $request->last_name,
            'email' => $request->email,
            'city' => $request->city,
            'type' => $request->type,
            'user_preferences' => implode(',', $request->userPreferences),
            'updated_at' =>  Carbon::now()
        ]
    );
    

    https://php.net/implode

    Then when you are displaying the values in your show.blade.php, you can then use $userPreferences = explode(',', $row->userPreferences); to get the array back.

    https://php.net/explode

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失