【问题标题】:Laravel: Add data to the $request->all()Laravel:将数据添加到 $request->all()
【发布时间】:2016-03-11 01:02:45
【问题描述】:

我想将扇区 ID 添加到请求中,但是当我提交数据时,上面没有任何存储。 这是我的代码

public function store(QuestionRequest $request)
    {
        $data = $request->all();
        Question::create($data);
        $sectors =  Sector::lists('id');
        foreach($sectors as $sector){
            CustomizeQuestion::create(array_add($request->all(), 'sector_id', $sector));
        }

        flash()->success('New question has been added.');
        return redirect('questions');
    }

我也试过这段代码,但它是一样的:

public function store(QuestionRequest $request)
    {
        $data = $request->all();
        Question::create($data);
        $sectors =  Sector::lists('id');
        foreach($sectors as $sector){
            $data['sector_id'] = $sector;
            CustomizeQuestion::create($data);
        }

        flash()->success('New question has been added.');
        return redirect('questions');
    }

【问题讨论】:

  • 您的代码对我有用。尝试做 dd($sector, array_add($request->all(), 'sector_id', $sector));并粘贴结果
  • 你会添加模型 CustomizeQuestion 吗?

标签: php mysql laravel-5


【解决方案1】:

首先检查您的CustomizeQuestion 型号。 sector_id 应该在 $fillable 数组中。示例:

protected $fillable = [
    'sector_id',
    'more',
    'and_more'
];

如果您的表单只返回一个idstore 方法,则无需使用foreach 或列出您的id。只需这样做:

$data['sector_id'] = $request['id'];
CustomizeQuestion::create($data);

【讨论】:

    【解决方案2】:

    如您所说,如果您只想在请求中添加一个“id”,您可以在创建任何内容之前简单地执行此操作:

    $data = $request->all();
    $data['sector_id'] = whatever you want;
    Question::create($data);
    

    或者像你展示的第二种方式。

    如果此方法不起作用,请验证您是否在模型的可填充数组中指定了属性,以及您是否使用了在迁移中指定的正确属性名称。

    【讨论】:

      猜你喜欢
      • 2016-07-01
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 2017-08-24
      • 2021-05-22
      • 2017-12-04
      相关资源
      最近更新 更多