Laravel删除文件


Laravel remove files

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

我认为:

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

使用$ticket->image,我给出了票证具有的所有路径。这是我收到邮件请求的路线:

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

但当我死了,把$request->image倒在我的控制器里时,我看不到那张票的路径了?

做这件事的正确方法是什么?

编辑:

当我说:

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

它告诉我:

未定义的属性:Illuminate''Database''Eloquent''Relations''HasMany::$path(查看:/home/warrant/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

您可以将参数传递给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();