Laravel 删除文件

Posted

技术标签:

【中文标题】Laravel 删除文件【英文标题】:Laravel remove files 【发布时间】:2016-04-10 19:39:12 【问题描述】:

我正在我的应用程序中构建一个上传页面。但是如何 我可以在 Laravel 中删除文件吗?

我认为这是:

<a href="!! action('AdminTicketsController@deleteTicket',$ticket->id,$ticket->image) !!" class="btn btn-dark">Remove ticket</a>

对于$ticket-&gt;image,我给出了票证的所有路径。这是我收到帖子请求的路线:

Route::post('admin/ticket/remove','AdminTicketsController@deleteTicket');

但是当我死了并在我的控制器中转储 $request-&gt;image 时,我看不到那张票的路径?

这样做的正确方法是什么?

编辑:

当我说:

&lt;a href="!! action('AdminTicketsController@deleteTicket',['id' =&gt; $ticket-&gt;id, 'image' =&gt; $ticket-&gt;image()-&gt;path ]) !!" class="btn btn-dark"&gt;Remove ticket&lt;/a&gt;

它告诉我:

未定义的属性: Illuminate\Database\Eloquent\Relations\HasMany::$path (查看:/home/vagrant/Code/support/local/resources/views/admin/ticket.blade.php

在我的票证模型中,我是说:

public function image()

    return $this->hasMany('App\image');

在我的图像模型中:

 public function ticket()
 
    return $this->belongsTo('App\ticket');
 

数据库:

TICKET
 ticketid
 ticketname
IMAGE
 imageid
 ticket_ticketid
 path

【问题讨论】:

【参考方案1】:

您可以将参数传递给action 函数,作为第二个数组参数:

<a href="!! action('AdminTicketsController@deleteTicket',['id' => $ticket->id, 'image' => $ticket->image ]) !!" class="btn btn-dark">Remove ticket</a>

在控制器中:

public function deleteTicket(Request $request, $id, $image)

    //use ticket_image

编辑

我建议不要将图像路径作为参数传递:只传递票证ID,然后从票证模型中检索控制器中的路径。 对于错误,您应该确保您的关系设置正确

编辑 2

你没有正确指定你的关系:只要你不使用 laravel 约定的表的字段名称,你必须在你的关系中指定外键和主键:

门票

public function images()

    return $this->hasMany('App\image', 'ticket_ticketid', 'ticketid' );

图片

public function ticket()

    return $this->belongsTo('App\ticket', 'ticket_ticketid', 'ticketid');

一旦你建立了一个$ticket 模型,你可以使用以下方法检索图像:

$images = $ticket->images();

或者:

$images = Ticket::find($ticket_id)->images();

【讨论】:

感谢您的回复。但是一张票可以有多个图像/文件路径,所以我应该发送一个集合,我猜这可能吗? @jamie:检查我的编辑:尝试将数组作为第二个参数传递给带有参数的操作函数...... 这取决于:一张票有很多图片还是只有一张?您的数据库表是如何构成的?

以上是关于Laravel 删除文件的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 删除文件

Laravel 迁移:使用 artisan 命令删除特定表并删除迁移文件

在 Laravel 中删除缓存文件

Laravel 迁移已删除的文件

Laravel用Storage门面删除文件

如何在laravel中删除公共文件夹