2016-01-06 167 views
3

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

我在我的观点得到了这个:

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

随着$ticket->image我给的票已全部路径。这是我的路,我收到POST请求:

Route::post('admin/ticket/remove','[email protected]'); 

但是,当我死去,在我的控制器转储$request->image,我看不出票的路径?

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

编辑:

当我说:

<a href="{!! action('[email protected]',['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

可以传递参数给action功能,作为第二个阵列参数:

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

并在控制器:

public function deleteTicket(Request $request, $id, $image) 
{ 
    //use ticket_image 
} 

编辑

我建议不要通过图像路径作为参数:通止票ID,然后检索从控制器的路径票模型。 对于错误,你应该确保你的关系,正确设置

EDIT 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(); 
+0

感谢您的答复。但是票可以有多个图像/文件路径,所以我应该发送一个我认为可能的集合? – Jamie

+0

@jamie:chek我的编辑:尝试传递数组作为第二个参数与动作函数的参数... – Moppo

+0

谢谢,但我的模型中的关系是正确的? – Jamie