Laravel 删除文件
Laravel remove files
我正在我的应用程序中构建一个上传页面。但是如何
我可以删除 Laravel 中的文件吗?
我的观点是:
<a href="{!! action('AdminTicketsController@deleteTicket',$ticket->id,$ticket->image) !!}" class="btn btn-dark">Remove ticket</a>
与$ticket->image
我给出了票证的所有路径。这是我收到 post 请求的路线:
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>
它告诉我:
Undefined property:
Illuminate\Database\Eloquent\Relations\HasMany::$path
(View:/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
您可以将参数传递给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();
我正在我的应用程序中构建一个上传页面。但是如何 我可以删除 Laravel 中的文件吗?
我的观点是:
<a href="{!! action('AdminTicketsController@deleteTicket',$ticket->id,$ticket->image) !!}" class="btn btn-dark">Remove ticket</a>
与$ticket->image
我给出了票证的所有路径。这是我收到 post 请求的路线:
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>
它告诉我:
Undefined property: Illuminate\Database\Eloquent\Relations\HasMany::$path (View:/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
您可以将参数传递给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();