Я хочу вернуть все данные, которые были вставлены в базу данных с файлом Excel.
В основном у меня есть файл с несколькими строками в качестве данных, этот файл будет вставлен в базу данных, которая работает хорошо. Но проблема в том, что я хочу вернуть / вывести список всех вставленных данных пользователю.
Вот мои контроллеры
<?php
namespace App\Http\Controllers\Api;
use App\Imports\QuotasImport;
use App\Models\Quota;
use Illuminate\Http\Request;
class QuotaController extends BasicCrudController
{
public function store(Request $request)
{
if ($request->file('file')) {
$a = (new QuotasImport())->import(request()->file('file'));
return "Return here, the data";
}
}
public function rulesStore()
{
return [
'operation_uuid' => 'required|uuid|exists:operations,uuid',
'product_uuid' => 'required|uuid|exists:products,uuid',
'client_type' => 'required|alpha|in:PJ,PF',
'wallet_uuid' => 'required|uuid|exists:wallets,uuid',
'action_uuid' => 'required|uuid|exists:actions,uuid',
'agency_uuid' => 'required|uuid|exists:agencies,uuid',
'provider_uuid' => 'required|uuid|exists:providers,uuid',
'quantity' => 'required|integer',
'execution_date' => ['required','regex:/^[0-9]{2}\/[0-9]{4}$/']
];
}
protected function rulesUpdate()
{
return [
'client_type' => 'sometimes|required|alpha|in:PJ,PF',
'quantity' => 'sometimes|required|integer',
'execution_date' => ['sometimes', 'required','regex:/^[0-9]{2}\/[0-9]{4}$/']
];
}
protected function model()
{
return Quota::class;
}
}
и мой контроллер импорта
<?php
namespace App\Imports;
use App\Http\Controllers\Api\QuotaController;
use App\Models\Quota;
use Illuminate\Support\Facades\Validator;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\ToModel;
class QuotasImport implements ToModel
{
use Importable;
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
$segmentation = $row[0];
$quantity = $row[1];
$execution_date = '10/2020';
$operation_code = substr($segmentation, 0, 2);
$operation_uuid = $this->find( \App\Models\Operation::class, $operation_code);
$product_code = substr($segmentation, 2, 2);
$product_uuid = $this->find( \App\Models\Product::class, $product_code);
$client_type = substr($segmentation, 4, 2);
$wallet_code = substr($segmentation, 6, 4);
$wallet_uuid = $this->find( \App\Models\Wallet::class, $wallet_code);
$action_code = substr($segmentation, 11, 3);
$action_uuid = $this->find( \App\Models\Action::class, $action_code);
$agency_code = substr($segmentation, 14, 3);
$agency_uuid = $this->find( \App\Models\Agency::class, $agency_code);
$provider_code = substr($segmentation, 17, 3);
$provider_uuid = $this->find( \App\Models\Provider::class, $provider_code);
$data = [
'operation_uuid' => $operation_uuid,
'product_uuid' => $product_uuid,
'client_type' => $client_type,
'wallet_uuid' => $wallet_uuid,
'action_uuid' => $action_uuid,
'agency_uuid' => $agency_uuid,
'provider_uuid' => $provider_uuid,
'quantity' => $quantity,
'execution_date' => $execution_date
];
$validatedData = Validator::make($data, app(QuotaController::class)->rulesStore())->validate();
return new Quota ($validatedData);
}
protected function find($model, $code)
{
$model = $model::where('code', $code)->firstOrFail();
return $model->uuid;
}
}