首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 4-检查数据库值是否为真

Laravel 4-检查数据库值是否为真
EN

Stack Overflow用户
提问于 2014-04-26 06:12:37
回答 2查看 4.9K关注 0票数 1

我在为我的应用程序运行Laravel 4 ..。我是个新手。

我使用内置于身份验证中的标准创建了一个小应用程序,一切都很好。

我有User.php模型和路由文件来处理我的所有请求。

我想要做的是添加管理员,我在用户表中添加了一个字段,名为“is_admin”。它是1或0的整数。

我想要做的事情如下所示

代码语言:javascript
运行
复制
if is_admin() {
    // Do stuff here if im an admin
}

有人能帮我解决这个问题吗?我现在只有一个数据库列。

干杯,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-26 06:17:02

实际上,您可以检查用户是否是管理员,而不使用以下内容:

代码语言:javascript
运行
复制
if(Auth::user()->is_admin) {
    //...
}

因为Auth::user()返回当前登录的用户,并且is_admin字段在users表中可用,所以如果用户登录了,那么您可以通过检查登录用户模型的Auth::user()->is_admin属性来检查。如果用户是admin,则值为1,这将是true,对于0,结果在if条件下为false。

如果您想在用户模型中添加一个方法,那么您可以尝试这样做:

代码语言:javascript
运行
复制
public function isAdmin()
{
    return $this->is_admin;
}

所以你可以检查一下:

代码语言:javascript
运行
复制
$user = User::find(1);
if($user->isAdmin()) {
    //...
}
票数 3
EN

Stack Overflow用户

发布于 2014-04-26 06:17:47

代码语言:javascript
运行
复制
$val = (bool)DB::table(DB::raw('DUAL'))->whereExists(function($query) use ($userId)) {
    $query->from = 'users';
    $query->where('id', $userId)->where('is_admin', 1)->select(DB::raw(1));
})->first([DB::raw(1)]);

这将运行一个SELECT 1 FROM DUAL WHERE EXISTS (SELECT 1 FROM users WHERE id = X and is_admin = 1查询,如果该行存在或不存在,该查询将返回布尔值。

DUAL是MySQL中的一个虚拟表,使用它,所以我们不需要在桌子上转转。之所以使用DB::raw(1),是因为我们不需要为此获取列数据,我们只需要true/false。

如果您已经登录,并且使用了Laravel Auth,您就可以像@狼人提到的那样做了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23307368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档