【问题标题】:Insert array PHALCON插入数组 PHALCON
【发布时间】:2021-03-04 06:49:03
【问题描述】:

我正在尝试从数组中插入多个数据,但在插入时只插入我键入的最后一个数据。

这是我发送数据的前端代码

let payload = new FormData();
        for(var i = 0; i< this.addresses.length; i++) {
            payload.append('address', this.addresses[i].Adress)
            payload.append('city', this.addresses[i].City)
            payload.append('country', this.addresses[i].State)
        }
payload.append("customer_number", this.customer_number);
        payload.append("documents_email", this.documents_email);
        payload.append("address_address", this.address_address);
        payload.append("tenant_id", this.id);
        payload.append("address_countries", this.selectedStateAddress);
        payload.append("address_cities", this.selectedCityAddress);
        payload.append("name", this.name);
        payload.append("abbr", this.abbr);
        payload.append("email", this.email);
        payload.append("phone", this.phone);
        payload.append("contact", this.contact);
        payload.append("chamber_commerce", this.chamber_commerce);
        payload.append("vat", this.vat);
    

this.$http.post("/saveTenant", payload)
            .then(res => {
                this.datatenants = res.data.data;
                console.log("The client save");
            });

这是我接收数据的后端代码

$address = $request ->getPost('address', 'string');
        $country_id = $request ->getPost('country', 'int');
        $city_id = $request ->getPost('city', 'int');
        $addresses = new TenantAddresses();
        $addresses->address           = $address;
        $addresses->country_id                = $country_id;
        $addresses->city_id                 = $city_id;

        if ($addresses->save() === false) {
          $this->db->rollback();
          return;
      }

这是保存时到达数据的内容

这是我添加的最后一个数据,它是唯一正在保存的数据

我不知道哪种方法是正确的,所以当我添加更多数据以正确保存时,我希望我的疑问已经清楚,您可以与我合作。

我收到了建设性的批评,因为我对编程有点陌生。非常感谢。

【问题讨论】:

  • 看起来payload 不包含地址数组。我会检查FormData 类的函数append。我认为append 函数一次只写入一个元素。相反,您需要发送一个数组。
  • 我的问题一直没能解决,你能帮我多一点吗?

标签: php vue.js phalcon


【解决方案1】:

您必须发送一组地址,而不是FormData 只发送一个地址。尝试使用这样的数组:

let payload = [];

for(var i = 0; i< this.addresses.length; i++) {
    payload.push({
        address: this.addresses[i].Adress,
        city: this.addresses[i].City,
        country: this.addresses[i].State
    });
}

this.$http.post("/saveTenant", { addresses: payload })
    .then(res => {
        this.datatenants = res.data.data;
        console.log("The client save");
    });

在您的后端:

$addresses = $request->getPost('addresses', 'array');

foreach ($addresses as $address) {
    // ...
}

【讨论】:

  • 感谢您花时间回答我的问题,但我需要在 FormData 中发送 yes 或 yes 以便数据到达后端。还有其他解决方案吗?
  • 您需要调整您的后端以寻找addresses 而不是address ---> $request -&gt;getPost('address', 'string'); 然后循环遍历保存每个地址的数组
  • 你能给我举个例子来说明我的情况吗,我将非常感激!!
  • 按照@Dan 的建议做,但您应该将地址命名为this.$http.post("/saveTenant", { addresses: payload }),并且在您的后端您可以获得地址$request-&gt;getPost('addresses', 'string');,它应该返回一个{ address, city, country } 数组
  • 我已经对问题进行了一些编辑,因为我发送了更多数据,而不仅仅是地址。当我想发送更多数据时,他们告诉我的方式不起作用,我必须使用 FormData
猜你喜欢
  • 2023-03-23
  • 2014-08-07
  • 2014-10-25
  • 1970-01-01
  • 2023-03-17
  • 2016-12-09
  • 2021-12-10
  • 1970-01-01
  • 2021-03-23
相关资源
最近更新 更多