【问题标题】:Store array from vuejs into a SQL column json but store null将 vuejs 中的数组存储到 SQL 列 json 中,但存储 null
【发布时间】:2020-06-29 15:54:59
【问题描述】:

我创建了一个表单,它将数据保存在我的表 packusers 列中。

我的表单数据存储在我的 user 变量中。 在我的 axios 请求期间,我将 user 变量中的数据推送到我的 users 变量中,该变量是一个空数组。

数据很好地存储在我的 users 变量中,该变量是一个数组。

然后,我将 users 变量存储在我的表 pack 中的 users 列中,但每次返回的结果都是 NULL .

<form action="" class="modal__form">
    <div class="modal__bloc-field">
       <div class="modal__form-field">
          <label for="fullname">Nom</label>
          <input type="text" id="fullname" v-model="user.fullname">
        </div>
        <div class="modal__form-field">
           <label for="department">Département</label>
           <input type="text" id="department" v-model="user.department">
        </div>
    </div>
    <div class="c-btn__container c-btn__container--modal">
       <button @click.prevent="postAddUsers()" class="c-btn c-btn--primary">
          <div>
            <span>Ajouter</span>
         </div>
       </button>
     </div>
  </form>
  import axios from 'axios';

    export default {
        data() {
            return {
                pack: '',
                showModal: false,
                users: [],
                user: {
                    fullname: '',
                    department: ''
                }
            }
        },

        mounted() {
            this.getPackView();
        },

        methods: {
            async getPackView() {
                axios.get(`api/listing/${this.day}/${this.slug}`).then(response => {
                    this.pack = response.data.data
                })
            },

            postAddUsers(){
                this.users.push(this.user);
                axios.post(`addUsers/${this.day}/${this.slug}`, this.users);
                this.getPackView();
            }
        },
        props: ['day', 'slug']
    }
public function addUsers(Request $request, $day, $slug)
    {
        $data = Pack::where([
            ['date', '=', $day],
            ['slug', '=', $slug]
        ])->first();

        $data->users = $request->users;
        $data->save();

        return response()->json([
            'status' => $data->name,
            200
        ]);
    }
Route::post('addUsers/{day}/{slug}', 'PageController@addUsers');

【问题讨论】:

    标签: javascript php laravel vue.js


    【解决方案1】:

    我认为最好每次插入一个。所以,

    public function addUser(Request $request, $day, $slug)
    {
        $data = Pack::where([
            ['date', '=', $day],
            ['slug', '=', $slug]
        ])->first();
    
        $data->users()->create($request['user']);
    
        return response()->json([
            'status' => $data->name,
            200
        ]);
    }
    

    但是如果你想在每次点击按钮时都插入,你可以这样做

    public function addUsers(Request $request, $day, $slug)
    {
        $data = Pack::where([
            ['date', '=', $day],
            ['slug', '=', $slug]
        ])->first();
    
        $data->users()->createMany($request['user']);
    
        return response()->json([
            'status' => $data->name,
            200
        ]);
    }
    

    尝试在方法中使用 dd($request['users']) 看看会出现什么

    See more

    【讨论】:

      猜你喜欢
      • 2015-02-01
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 2020-02-04
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多