中继器字段上的.csv导入/导出的Octobercms问题

时间:2019-03-29 11:32:33

标签: json csv export-to-csv octobercms import-from-csv

我有一个客户表和模型,其中一些用于{strong>电话,邮件地址repeater fields >。

我使用导入导出行为。

如果我不使用 json_encode 导出数据,则会收到“ 数组到字符串转换”错误:

namespace MyCompany\MyPlugin\Models;

use Model;
use Backend\Models\ExportModel;
use MyCompany\MyPlugin\Models\Customer;

class ExportCustomer extends \Backend\Models\ExportModel {

public function exportData($columns, $sessionKey = null) {
    $customers = Customer::all();

    $customers->each(function($customer) use ($columns) {
        foreach ($columns as $column) {
            if (is_array($customer->$column)) {
                $customer->$column = json_encode($customer->$column);
            }
            $customer->addVisible($column);
        }
    });

    return $customers->toArray();
    }

}

但是以这种方式生成的。 csv 不能满足我的客户需求(他需要在上传之前手动进行编辑以填充后端)。

编辑:目标是每个转发器字段都有一个前缀列,以便我的客户可以通过这种方式轻松地进行编辑(“联系人”是转发器字段):

| id | business_name | contact_1_name | contact_1_email | contact_1_mobile | contact_2_name | contact_2_email | contact_2_mobile | contact_3_name | contact_3_email | contact_3_mobile | ...

联系人”列中的数据确实是json_encoded:

[{"name":"Eric Lucas","surname":"Riddle","role":"Manager","phone":"+1 (989) 305-8603","cellphone":"+1 (298) 758-1686","email":"calyqev@mailinator.com","linkedin":"mylinkedin"}]

尽管如此,如果我编辑它并尝试通过ImportCustomers模型导入它,我会用转义数据填充所有json_encoded表,而无法在视图上检索它。其他字段显示正确。

class ImportCustomer extends \Backend\Models\ImportModel
{
    public $rules = [];

    public function importData($results, $sessionKey = null)    {

        foreach ($results as $row => $data) {

            try {
                $customer = new Customer;
                $customer->fill($data);
                $customer->save();

                $this->logCreated();
            }
            catch (\Exception $ex) {
                $this->logError($row, $ex->getMessage());
            }

        }
    }
}

关于如何管理转发器字段的任何想法?

0 个答案:

没有答案