我有一个客户表和模型,其中一些用于{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());
}
}
}
}
关于如何管理转发器字段的任何想法?