我是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
对象!我的错误。
答案 0 :(得分:3)
你这样做:
$user = ActiveUser::where("email",$email);
返回QueryBuilder
,Laravel使用QueryBuilders在您通过Eloquent模型构建查询时准备查询。
如果您想从数据库中获取结果,您应该:
$user = ActiveUser::where("email",$email)->first();
应返回查询结果,如果记录不存在,则为null
。