ldc-tousenselle/app/Casts/DatabaseFile.php

57 lines
1.7 KiB
PHP
Raw Permalink Normal View History

2021-06-09 11:43:25 +02:00
<?php
namespace App\Casts;
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\File;
use InvalidArgumentException;
class DatabaseFile implements CastsAttributes
{
/**
* Cast the given value.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @param string $key
* @param mixed $value
* @param array $attributes
* @return \App\Models\Address
*/
// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceAfterLastUsed,Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceBeforeLastUsed
public function get($model, $key, $value, $attributes)
{
$file = new File();
$file->put('php://temp', $attributes['file']);
return $file;
}
/**
* Prepare the given value for storage.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @param string $key
* @param \App\Models\Address $value
* @param array $attributes
* @return array
*/
// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceAfterLastUsed,Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceBeforeLastUsed
public function set($model, $key, $value, $attributes)
{
if (!$value instanceof UploadedFile) {
throw new InvalidArgumentException(
'The given value is not an ' .
UploadedFile::class .
' instance.'
);
}
/** @var \Illuminate\Http\UploadedFile */
$value = $value;
return [
'file' => $value->get()
];
}
}