Преобразовать CSV-файл в объект JSON с помощью LaravelPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Преобразовать CSV-файл в объект JSON с помощью Laravel

Сообщение Anonymous »

Я делаю проект на Laravel 7. Мне нужно прочитать файл csv и через контроллер передать данные в формате json в представление.
К сожалению, я не знаю, как это сделать. p>
Это мои методы контроллера:

Код: Выделить всё

public function index($source)
{
$source = strtolower($source);

switch ($source) {
case "csv":
$file_csv = base_path('transactions.csv');
$transactions = $this->csvToJson($file_csv);
dd(gettype($transactions));
return view('transactions', ['source' => $source, 'transactions' => $transactions]);
break;
case "db":
$transactions = Transaction::all();
dd(gettype($transactions));
return view('transactions', ['source' => $source, 'transactions' => $transactions]);
break;
default:
abort(400, 'Bad sintax error.');
}
}

function csvToJson($filename = '', $delimiter = ',')
{
if (!file_exists($filename) || !is_readable($filename)) {
return false;
}
$header = null;
$data = array();
if (($handle = fopen($filename, 'r')) !== false)
{
while (($row = fgetcsv($handle, 1000, $delimiter)) !== false)
{
if (!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
}
fclose($handle);
}
return $data;
}
Как видите, в обоих случаях я поместил dd с функцией gettype внутри. В первом случае я неправильно получаю массив ответа, во втором - правильно получаю объект ответа.
Преобразованный файл csv должен иметь такой формат:

Код: Выделить всё

[{"id":1,"code":"T_218_ljydmgebx","amount":"8617.19","user_id":375,"created_at":"2020-01-19T16:08:59.000000Z","updated_at":"2020-01-19T16:08:59.000000Z"},
{"id":2,"code":"T_335_wmhrbjxld","amount":"6502.72","user_id":1847,"created_at":"2020-01-19T16:08:59.000000Z","updated_at":"2020-01-19T16:08:59.000000Z"}]
Знаете ли вы, как в первом случае преобразовать транзакции массива в объект json?

Подробнее здесь: https://stackoverflow.com/questions/653 ... th-laravel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»