Laravel:将数据添加到$ request-> all()

时间:2015-12-06 10:35:15

标签: php mysql laravel-5

我想在请求中添加扇区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');
    }

2 个答案:

答案 0 :(得分:2)

如果你只是想按照你的说法在你的请求中添加一个'id',你可以在创建之前简单地执行此操作:

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

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

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

答案 1 :(得分:2)

首先检查您的CustomizeQuestion模型。 sector_id应位于$fillable数组中。示例:

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

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

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