为什么删除的记录仍然使用雄辩的模型返回?

时间:2014-06-23 07:26:40

标签: php laravel laravel-4 eloquent

我是laravel的新手,这是我用任何语言学习的第一个框架,无论如何, 我使用以下方法删除了一些记录:

public function getForceLogOut() 
{
    $input = Input::all();
    $e = $input['email'];

    echo $e;

    DB::select(DB::raw("DELETE FROM active_users WHERE email = '$e'"));
}

但是通过eloquent模型执行的查询仍会返回该对象,即使它已被实际删除(在phpMyAdmin中检查表)

public static function isLoggedIn()
{
    $email = Auth::user()->email;

    //$user = ActiveUser::where("email",$email); <== RETURNS THE OBJECT
    $user = DB::select(DB::raw("SELECT * fROM active_users where email = '$email'")); // <== WORKS FINE

    if ($user) {
        return true;
    } else {
        Auth::logout();
        return false;
    }
}

为什么会这样?没有雄辩的模型查询数据库并处理缓存的记录或类似的东西?

编辑:是的,正如所指出的,它会返回QueryBuilder对象!我的错误。

1 个答案:

答案 0 :(得分:3)

你这样做:

$user = ActiveUser::where("email",$email);

返回QueryBuilder,Laravel使用QueryBuilders在您通过Eloquent模型构建查询时准备查询。

如果您想从数据库中获取结果,您应该:

$user = ActiveUser::where("email",$email)->first();

应返回查询结果,如果记录不存在,则为null