Laravel删除文件

时间:2016-01-06 16:21:15

标签: php laravel laravel-5 eloquent blade

我正在我的应用程序中构建一个上传页面。但是怎么样 我可以删除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>

告诉我:

  

未定义的属性:   照亮\数据库\雄辩\关系\的hasMany :: $路径   (查看:/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 个答案:

答案 0 :(得分: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约定表格&#39;字段名称,您必须在关系中指定外键和主键:

<强>票务

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();