循环数组并将其插入数据库Laravel

时间:2019-06-02 06:21:20

标签: php database laravel vue.js axios

我想遍历数组并将其插入数据库。当我检查dd($ request-> users)时,它显示为“ NULL”,但是如果我将dd($ request-> all())放入,则出现数据数组。另外,下面的控制器代码不会将数据插入数据库。谢谢

脚本

<script>
export default {
    data(){
      return{  
            users: [{
                username:'',
                password:'',
                phone:'',
                email:''
            }]
      }
    },
    methods:{
        addMoreData(){
            this.users.push({
                username: '', 
                password: '' , 
                email: '',
                phone:''
                });
        },
        deleteData(index){
            this.users.splice(index,1)  
        },
        submitData(){
         axios.post('/api/user', this.users)
      }
    },
    mounted() {
        console.log('Component mounted.')
    }
}

控制器

    public function store(Request $request)
{   
    for ($i = 1; $i < count($request->all()); $i++) {
        data::create([
                'username'=>$request->username[$i],
                'password'=>$request->password[$i],
                'phone'=>$request->phone[$i],
                'email'=>$request->email[$i]
            ]);
    }
}

已编辑

Result for dd(request->all()

Result for dd(request->users

2 个答案:

答案 0 :(得分:1)

我认为这应该在您的情况下起作用。

public function store(Request $request)
{ 
   foreach($request->all() as $user){
      $u = User::create([
             'username'=>$user['username'],
             'password'=>$user['password'],
             'phone'=>$user['phone'],
             'email'=>$user['email']
      ])
     return ...
   }
}

但是,如果要从前端发送用户,则需要将用户放置在名为用户的新数组中。 祝你好运。

答案 1 :(得分:0)

如果您的数据使用此图片中的这种格式

enter image description here

在控制器中:

public function store(Request $request){   

    $users = $request->all();

    if(!empty($users)){
        foreach($users as $user){
           data::create($user);
        }
    }
}