【问题标题】:Laravel : Change data after update RequestLaravel:更新请求后更改数据
【发布时间】:2020-08-03 09:23:40
【问题描述】:

我正在使用 Select2 在数据库中创建多个数据。

我在数据库中的语言字段:

English,French,Spanish

我的控制器

public function store(UserCreateRequest $request)
  {

    $data = $request->all();
    $data['languages'] = implode(',', $request['languages']);
    User::create($data);
    return redirect()->back()->with('message', 'Account Successfully Created');
  }

但更新后语言字段变化如下

["English","French","Spanish"]

在控制器中更新

    public function update(Request $request, $id)
{
    $user = User::findOrFail($id);
    $user->update($request->all());
    return redirect()->back()->with('message', 'Account Successfully Updated');

}

我在编辑表单中使用 in_array() 来显示所选数据

【问题讨论】:

  • 很可能您也将语言作为更新形式的数据发送。与创建类似,您也需要在更新中处理语言数组。

标签: php laravel


【解决方案1】:

你可以创建一个方法,或者重写你的更新方法

public function update(Request $request, $id)
{
    $user = User::findOrFail($id);
    
    $data = $request->all();
    $data['languages'] = implode(',', $request['languages']);

    $user->update($data);
    return redirect()->back()->with('message', 'Account Successfully Updated');

}

但我认为连击创建关系用户 -> manyToMany -> 语言,表格示例

user {user_id, email, password}
user_language {user_language_id, user_id, language_id}
language {language_id, key, title}

对于选择从语言中获取所有内容。 对于将语言附加到用户使用附加方法。要获取所有语言,只需在用户上调用 ->languages。等等。对不起我的英语,希望你能理解我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-20
    • 2017-05-20
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 2020-04-28
    • 1970-01-01
    相关资源
    最近更新 更多