Laravel Query builder Удалить уведомление о товаре

Я пытаюсь удалить запись из таблицы с именем project в запросе Laravel 4.2 на основе входных данных.

Что я сделал, это -

 DB::table('project')->where('project.id', '=', Input::get('id'))->delete();

Но проблема в том, как я могу узнать это, если данные удалены или нет?

Может ли кто-нибудь, пожалуйста, помогите?

2 ответа

Решение
$id = Input::get('id');
$entryObj = ProjectModel::findorfail($id); // Assuming you have model
// It's bad practise to delete on DB:table because you won't be able to use 
//soft-deletes or observers won't trigger if you don't use models.

if($entryObj){
    if(!$entryObj->delete()){
        throw new Exception('Now we know that it failed to delete');
    }else{
         echo "100% record is deleted.";
    }
}

Но допустим, что в этом случае вам нет дела до моделей / наблюдателей / программных удалений

if(DB::table('project')->where('project.id', '=', Input::get('id'))->delete()){
   echo "successfully deleted";
}

Имейте в виду, что это очень, очень плохая практика, во-первых, мы не проверяли, что там будет Input::get('id'), это может быть слон или кошка или, скажем, предполагалось, что userId=1, но так как они хотели испортите свои данные, которые они изменили на html на стороне клиента, чтобы сказать, что это 50. Бум, там идут данные пользователя 50, который является катастрофой, если вы думаете об этом.

Забыл упомянуть ярлык

Если это идентификатор, то вы также можете использовать

ProjectModel::destroy($id); //to delete

Оператор delete возвращает количество записей, на которые повлияло. Следовательно, вы можете проверить, является ли возвращаемое значение больше нуля. В вашем случае это должно быть всегда 1, если идентификатор уникален. Таким образом, если выражение if равно единице, то удаление было успешным

Другие вопросы по тегам