php laravel 添加 $request->all() 字段

php 代码

public function store(Request $request)
{
    
    $name = $request->get('namne', 0);
    
    $newname = $request->set('newname', 0);  
    
    // 前端提交 `data` 里面没有 `newname` 这个字段,
    // 需要在这里处理一些业务逻辑,新增一个字段然后到下面一起保存起来
    
    // $request->newname = 'newname' 
    // 尝试过这样好像没写进入
    
    //想在保存数据前,添加一个字段 ;
    // $request->all()->'新的字段名称' = '我是新加的字段值';
    // 这个时候 $request->all() 会多出来上面新添加的字段
    
    $post = Post::create($request->all());

}

vue 代码

this.$http.post('/backend/post', data).then(function(result) {

})

大神 有木有,该如何在保存前 在 $request->all() 里面添加一个字段呢

阅读 12.1k
6 个回答

常用的几个操作 input 的方法:

// 合并输入,如果有相同的key,用户输入的值会被替换掉,否则追加到 input
$request->merge(['foo' => 'bar', ....]);

// 替换所有输入
$request->replace([..])

// 设置某参数,如果存在则替换,否则新增
$request['foo'] = 'bar';

// 移除某参数
unset($request['foo'])
$request->all() // 这是一个数组吧,array_merge() 是你的需求么
$array = $request->all();
$array['test'] = 'test';

$post = Post::create($array);

建议你看一下request的源码:
例如:(merge方法,将一个新值合并到request中)

 /**
     * Merge new input into the current request's input array.
     *
     * @param  array  $input
     * @return void
     */
    public function merge(array $input)
    {
        $this->getInputSource()->add($input);
    }

所以我们可以使用:

$request->merge(['newKey' => 'newValue']);

用array_merge生成新数组,而不是在里面添加一个键值对,你不觉得这样更合理吗

$request->replace(array_merge($request->all(),[
    'key'=>'val';
]));

dd($request->all());
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏