在更新Laravel中的记录时如何保持默认图像
当用户更新电影记录并上传新图像时,我希望删除旧图像,并且要上传新图像,但是如果电影具有默认图像,则我不想删除它(因为其他带有默认的记录此后将不会有任何图像,而只是在更新期间上传新的图像。而且,如果用户没有上传任何内容,则只需在其他参数更新时使用默认图像的记录。我的代码有一些错误,所以这是更新函数:
public function update(StoreMovieRequest $request, Movie $movie)
{
$input = $request->all();
if ($image = $request->file('image_path') || $movie->image_path != 'images/default.png') {
$deleteImage = unlink(public_path(). '/' . $movie->image_path);
$image = $request->file('image_path');
$imageDestinationPath = 'images/';
$movieImage = $imageDestinationPath . date('YmdHis') . "." . $image->getClientOriginalExtension();
$image->move($imageDestinationPath, $movieImage);
$input['image_path'] = "$movieImage";
} elseif($image = $request->file('image_path') || $movie->image_path == 'images/default.png') {
$image = $request->file('image_path');
$imageDestinationPath = 'images/';
$movieImage = $imageDestinationPath . date('YmdHis') . "." . $image->getClientOriginalExtension();
$image->move($imageDestinationPath, $movieImage);
$input['image_path'] = "$movieImage";
}
$movie->update($input);
}
我的迁移:
public function up()
{
Schema::create('movies', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->integer('status')->nullable()->default(0);
$table->string('image_path')->default('images/default.png');
});
}
模型:
public $timestamps = false;
protected $fillable = ['name', 'status', 'image_path'];
请求:
public function rules()
{
return [
'name' => 'required',
'image_path' => 'image',
];
}
When a user updates a movie record and uploads a new image I want an older image to be deleted and a new one to be uploaded but if a movie has a default image I don't want to delete it (because other records with the default image won't have any after that) and just upload a new one during an update. And if a user doesn't upload anything then just keep a record with a default image like before while other parameters are getting updated. My code has some errors so here is the update function:
public function update(StoreMovieRequest $request, Movie $movie)
{
$input = $request->all();
if ($image = $request->file('image_path') || $movie->image_path != 'images/default.png') {
$deleteImage = unlink(public_path(). '/' . $movie->image_path);
$image = $request->file('image_path');
$imageDestinationPath = 'images/';
$movieImage = $imageDestinationPath . date('YmdHis') . "." . $image->getClientOriginalExtension();
$image->move($imageDestinationPath, $movieImage);
$input['image_path'] = "$movieImage";
} elseif($image = $request->file('image_path') || $movie->image_path == 'images/default.png') {
$image = $request->file('image_path');
$imageDestinationPath = 'images/';
$movieImage = $imageDestinationPath . date('YmdHis') . "." . $image->getClientOriginalExtension();
$image->move($imageDestinationPath, $movieImage);
$input['image_path'] = "$movieImage";
}
$movie->update($input);
}
My migration:
public function up()
{
Schema::create('movies', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->integer('status')->nullable()->default(0);
$table->string('image_path')->default('images/default.png');
});
}
Model:
public $timestamps = false;
protected $fillable = ['name', 'status', 'image_path'];
Request:
public function rules()
{
return [
'name' => 'required',
'image_path' => 'image',
];
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论