【问题标题】:How check in PHP if entry in db deleted?如果数据库中的条目被删除,如何检查 PHP?
【发布时间】:2018-01-09 13:46:13
【问题描述】:

我删除帖子:

$this->delete('/api/posts/1');

如何检查是否删除?

$this->assertNull(Post::find($post->id)); 

没用!

【问题讨论】:

  • delete 函数不会在成功时返回 true 或在失败时返回 false。大多数数据库框架都支持这一点。

标签: php mysql database laravel


【解决方案1】:

试试这个:

$this->notSeeInDatabase('posts', ['id' => $post->id]);

说明:

->notSeeInDatabase($table, array $data)  

->missingFromDatabase($table, array $data)

一个只是另一个的别名。

【讨论】:

    【解决方案2】:

    大多数答案都是复杂的或使用额外的函数来调用。 Laraval 删除函数返回布尔值或 null

    /**
     * Delete the model from the database.
     *
     * @return bool|null
     * @throws \Exception
     */
    public function delete()
    {
      ....
      ....
    }
    

    因此您可以简单地使用此代码来检查删除。

    try {
      if ($this->delete('/api/posts/1')) {
      }    
    } catch (\Exception $exception) {}
    

    【讨论】:

      【解决方案3】:

      您可以通过Post::findOrFail() 进行检查,或者您可以直接通过if(Post::findById($id) == null) 进行检查。

      编辑:不确定这在 Laravel >5.2 中是否仍然有效,但如果您软删除记录,您可能能够获取集合 withTrashed()。然后你可以使用if($record->isTrashed()) { ... }。此功能在模型中不是默认功能,但存在于 SoftDelete 特征中。

      在此处找到编辑信息:link

      【讨论】:

        【解决方案4】:

        你应该试试这个:

        $post = Post::find($post->id); 
        
        if(is_null($post))
        

        希望这对你有用!!!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-28
          • 2019-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-21
          相关资源
          最近更新 更多