Удалить несколько строк из базы данных на основе флажков
У меня проблема с удалением из базы данных. Если, например, я проверил 5 пунктов, удаляется только один. Нормально сценарий правильный: Мой взгляд:
{{ Form::open(array('url'=>'/administration/photo/deletePhoto','method' => 'post','files'=>true)) }}
@foreach($aPhotoInCategory as $photo)
{{ HTML::image($photo->name,'alt', array('class'=>'news-content-image','width' => 95, 'height' => 70 )) }}
{{ Form::checkbox('aObjects[]',$photo->id)}}
{{ Form::hidden('id',$aOnePhotoCategory['id']) }}
@endforeach
<br/><br/>
{{ Form::submit('Delete',array('class'=>'btn btn-primary')) }}
{{ Form::close() }}
Мой контроллер:
public function deletePhoto(){
$aPhotoChecked = Input::get('aObjects');
$id = Input::get('id');
foreach($aPhotoChecked as $photo){
$oPhoto = \Photo::find($photo);
if($oPhoto){
File::delete('public/'.$oPhoto->name);
$oPhoto->delete();
return Redirect::to('administration/category_photo/edit/'.$id)
->with('message_succes','Succes');
}
}
}
Массив $ aPhotoChecked содержит все проверенные элементы, но когда я нажимаю на кнопку удаления, удаляется только один элемент, а не все отмеченные. Помоги мне, пожалуйста.
2 ответа
Я решаю проблему с помощью:
for($i=0;$i<count($aPhotoChecked);$i++){
$oPhoto = \Photo::find($aPhotoChecked[$i]);
Log::info(print_r(public_path(),true));
File::delete(public_path().'/'.$oPhoto->name);
DB::table('photo')->where('id', '=', $aPhotoChecked[$i])->delete();
}
Ты пытался:
$aPhotoChecked = Input::get('aObjects');
foreach($aPhotoChecked as $key => $n )
{
$oPhoto = \Photo::find( $aPhotoChecked[$key] );
.....
// you can dump here and debug your arrays :)
}