Я хотел бы знать, могу ли я редактировать столбцы перед экспортом файла CSV или нет?
Например, у меня есть таблица продуктов, в которой есть title
description
created_at
updated_at
. Я хочу экспортировать что-то вроде title
body
, как вы видите здесь, я удалил created_at
, updated_at
, а также переименовал свой столбец description
в body
это возможно?
Я использую этот пакет версии 2.1.0 Информационный график
Дополнительная информация
в настоящее время я использую код экспорта по умолчанию из примеров, в том числе без дополнительных запросов и т. д. попытайтесь понять, как мне изменить свой код, чтобы экспортировать мои данные, как я хочу.
public function export() {
$products = Product::all();
Excel::create('products', function($excel) use($products) {
$excel->sheet('sheet 1', function($sheet) use($products){
$sheet->fromArray($products);
});
})->export('xls');
PS: я пытаюсь создать именно то, что это расширение делает в Magento,
Как видите, в этом расширении мы можем change default database column names
, add/remove columns
и т. д. (но мне нужны только эти две опции) перед экспортом данных.
ОБНОВИТЬ
Мне удалось получить имена столбцов таблицы, например:
Product model
public function getTableColumns() {
return $this->getConnection()->getSchemaBuilder()->getColumnListing($this->getTable());
}
а мой controller
такой:
public function export(Request $request) {
$product = new Product;
$list = $product->getTableColumns();
dd($list);
//$products = Product::select($list)->get();
// Excel::create('products', function($excel) use($products) {
// $excel->sheet('sheet 1', function($sheet) use($products){
// $sheet->fromArray($products);
// });
// })->export('xls');
}
my list dd
array:27 [▼
0 => "id"
1 => "title"
2 => "slug"
3 => "imageOne"
4 => "imageTwo"
5 => "short_description"
6 => "description"
7 => "price"
8 => "meta_description"
9 => "meta_tags"
10 => "arrivalDays"
11 => "height"
12 => "weight"
13 => "lenght"
14 => "width"
15 => "sku"
16 => "stock"
17 => "label"
18 => "label_from"
19 => "label_to"
20 => "label_color"
21 => "status_id"
22 => "brand_id"
23 => "category_id"
24 => "subcategory_id"
25 => "created_at"
26 => "updated_at"
]
Вопросы
- Как мне изменить имена этих столбцов
before export my file
? - Как получить флажок для каждого столбца? (объяснение ниже)
Флажок
Мне нужен флажок для каждого столбца, чтобы сказать, что этот столбец должен быть включен в экспортный файл или нет.
example
Я сниму отметку со столбцаcreated_at
, чтобы он не был включен в мой экспортированный CSV-файл.
ОБНОВЛЕНИЕ 2
Хорошо, я получаю это для работы с моими пользовательскими именами. Есть маленькая проблема:
Моя строка данных будет повторяться дважды в файле excel.
Explain
Я отредактировал 5
столбца своей базы данных и получил 10
Коды
Это мой обновленный код:
public function export(Request $request) {
$products = Product::all();
Excel::create('products', function($excel) use($products, $request) {
$excel->sheet('sheet 1', function($sheet) use($products, $request){
$ddd = $request->except('_token');
foreach($ddd as $fff){
$ddd[] = $fff;
}
$sheet->fromArray($products, null, 'A1', false, false);
$sheet->row(1, $ddd);
});
})->export('csv');
return redirect()->back();
}
Есть идеи?