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

Ala*_*mad 5 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');
    }
Run Code Online (Sandbox Code Playgroud)

我也尝试过这段代码,但它是相同的:

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');
    }
Run Code Online (Sandbox Code Playgroud)

cbc*_*aio 6

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

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

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

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


sma*_*hat 3

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

protected $fillable = [
    'sector_id',
    'more',
    'and_more'
];
Run Code Online (Sandbox Code Playgroud)

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

$data['sector_id'] = $request['id'];
CustomizeQuestion::create($data);
Run Code Online (Sandbox Code Playgroud)