function delete() { foreach ($this->request->getPost('checkbox') as $id) { $path_thumb = '../media/images/uploads/'.$id.'/thumb'; if (is_dir($path_thumb)) { delete_files($path_thumb); rmdir($path_thumb); } $path = '../media/images/uploads/'.$id; if (is_dir($path)) { delete_files($path); rmdir($path); } $articlesModel = new ArticlesModel(); $imagesModel = new ImagesModel(); $deleteImages = $imagesModel->where('id_article', $id)->delete(); $deleteArticles = $articlesModel->where('id', $id)->delete(); if($deleteImages && $deleteArticles) { return redirect()->to(base_url('articles'))->with('success', 'Gli articoli selezionati sono stati eliminati!'); } else { return redirect()->to(base_url('articles'))->with('danger', 'Errore! Impossibile eliminare i dati nel database.'); } }
$deleteImages = $imagesModel->whereIn('id_article', $id)->delete();$deleteArticles = $articlesModel->whereIn('id', $id)->delete();
CodeIgniter\Database\Exceptions\DatabaseException #8 Deletes are not allowed unless they contain a "where" or "like" clause.
$ids = [1, 2, 3, 4, 5]; // Id's to delete.$deleteImages = $imagesModel->whereIn('id_article', $ids)->delete();$deleteArticles = $articlesModel->whereIn('id', $ids)->delete();
(05-05-2020, 11:35 AM)jreklund Wrote: I think you are required to put in an array. Right now you are just entering one id. This need to be run outside your foreach, as you need to populate $ids array with all $id elements. PHP Code:$ids = [1, 2, 3, 4, 5]; // Id's to delete.$deleteImages = $imagesModel->whereIn('id_article', $ids)->delete();$deleteArticles = $articlesModel->whereIn('id', $ids)->delete();
$id = $this->request->getPost('checkbox'); $ids = []; for($count = 0; $count < count($id); $count++) { $ids[] = $id[$count]; } $articlesModel = new ArticlesModel(); $imagesModel = new ImagesModel(); $deleteImages = $imagesModel->whereIn('id_article', $ids)->delete(); $deleteArticles = $articlesModel->whereIn('id', $ids)->delete();