Laravel 背包店图片
Laravel Backpack store image
我正在尝试使用 Backpack 的 CRUD 存储图像。
模型的名称是 ProductModel,在 SetupCreateOperation 中,我有:
CRUD::addField([
'name' => 'photo',
'label' => 'Foto',
'type' => 'image'
]);
当我尝试上传图片时,出现以下错误。
String data, right truncated: 1406 Data too long for column 'photo.'
事实上,传递的字符串几乎有 7000 个字符长。
型号
class ProductModel extends Model
{
use \Backpack\CRUD\app\Models\Traits\CrudTrait;
use HasFactory;
protected $guarded = [];
public function products()
{
return $this->hasMany('App\Models\SoldProduct',
'product_model_id', 'id');
}
}
迁移
Schema::create('product_models', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('photo'); //path
$table->integer('stock');
$table->integer('limited_edition_pieces');
$table->decimal('price', 8, 2);
$table->string('note')->nullable();
$table->timestamps();
});
我该怎么办?
为了设置图像,您需要像这样添加字段
$this->crud->addField([
'name' => 'image',
'label' => 'Image',
'type' => 'upload',
'upload' => true
]);
如果你想上传到 s3(amazon),请使用 'disk' => 'uploads'
,否则如果你想将图像保存在 public 文件夹中,请不要添加它。
另外请记住,您的图像属性需要在您的模型中设置。
像这样,
public function setImageAttribute($value)
{
$attribute_name = "image";
// you can check here if file is recieved or not using hasFile()
$disk = "public";
$destination_path = "/uploads";
$this->uploadFileToDisk($value, $attribute_name, $disk, $destination_path);
}
uploadFileToDisk()
在你已经添加的Backpack\CRUD\app\Models\Traits\CrudTrait
我正在尝试使用 Backpack 的 CRUD 存储图像。 模型的名称是 ProductModel,在 SetupCreateOperation 中,我有:
CRUD::addField([
'name' => 'photo',
'label' => 'Foto',
'type' => 'image'
]);
当我尝试上传图片时,出现以下错误。
String data, right truncated: 1406 Data too long for column 'photo.'
事实上,传递的字符串几乎有 7000 个字符长。
型号
class ProductModel extends Model
{
use \Backpack\CRUD\app\Models\Traits\CrudTrait;
use HasFactory;
protected $guarded = [];
public function products()
{
return $this->hasMany('App\Models\SoldProduct',
'product_model_id', 'id');
}
}
迁移
Schema::create('product_models', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('photo'); //path
$table->integer('stock');
$table->integer('limited_edition_pieces');
$table->decimal('price', 8, 2);
$table->string('note')->nullable();
$table->timestamps();
});
我该怎么办?
为了设置图像,您需要像这样添加字段
$this->crud->addField([
'name' => 'image',
'label' => 'Image',
'type' => 'upload',
'upload' => true
]);
如果你想上传到 s3(amazon),请使用 'disk' => 'uploads'
,否则如果你想将图像保存在 public 文件夹中,请不要添加它。
另外请记住,您的图像属性需要在您的模型中设置。 像这样,
public function setImageAttribute($value)
{
$attribute_name = "image";
// you can check here if file is recieved or not using hasFile()
$disk = "public";
$destination_path = "/uploads";
$this->uploadFileToDisk($value, $attribute_name, $disk, $destination_path);
}
uploadFileToDisk()
在你已经添加的Backpack\CRUD\app\Models\Traits\CrudTrait