当前位置: 首页 > 知识库问答 >
问题:

检查关系,如果一个列是真的,Laravel

司空浩邈
2023-03-14

我有2张表:角色

在用户中,我role_id,我想检查该角色是否在true上有一列“access_admin_area”。如果为真,我正在使用中间件。

Gate::define('admin', function ($user) {
   return !empty($user->roles()->where('access_admin_area', true)->first());
});

从用户模型:

public function roles()
{
    return $this->hasOne(Role::class);
}

SQLSTATE[42703]:未定义的列:7错误:列角色。用户id不存在↵第1行:从“角色”中选择*,其中“角色”。“用户id”=$1和“角色..”。。

共有2个答案

邓高韵
2023-03-14

你是这样检查的吗:

public function roles()
{
    return $this->hasOne('App\Role', 'id' , 'role_id');
}
狄富
2023-03-14

这个错误在这里很好地描述了这个问题——用户模型中的hasOne relationship方法希望角色表行具有一个User\u id列,该列指定一个引用User table id列的外键。

如果我是你,我宁愿在这个用例中使用你的用户和角色模型之间的许多关系,因为我期望你的用户和角色应该有多对多的关系

查看laravel留档中的多对多关系雄辩和数据库结构https://laravel.com/docs/7.x/eloquent-relationships#many-to-many

 类似资料:
  • 问题内容: 在python中,我有一个列表,该列表应 仅包含一个 真实值(即)。有一个聪明的方法来检查吗?现在,我只是遍历整个列表并手动检查: 这看起来不雅,不是很pythonic。有更聪明的方法吗? 问题答案: 最冗长的解决方案并不总是最简单的解决方案。因此,我仅添加了一个较小的修改(以节省一些冗余的布尔值评估): 以下是一些比较时间: 我的输出: 可以看出,OP解决方案明显优于此处发布的大多数

  • 有以下三个表格: 用户id 名字 姓氏 等等 邮政id post_id user_id 关系表示用户正在跟踪帖子。 列出职位的最简单方法是: 但是,当列出帖子时,我也想询问当前用户(比如user_id=5)是否在关注每一篇帖子。 所以对于每个帖子,我都会有,,...,。 我可以用简单的SQL做到这一点,但是这能用雄辩的方式做到吗?

  • 我正在检查变量“auth”是否设置在\u POST或\u GET上,并需要两个不同的操作。我已经设法让它与if/else一起工作了,但它看起来很丑陋,很浪费? 如果未设置POST,请选中GET。如果设置了GET,则不执行任何操作 这里有一种全新的方法吗?像检查两者一样,如果两者都没有设置,则转到重定向,如果设置了一个,则继续页面? ^如果这些是可以接受的陈述,“什么都不做”部分应该是什么?

  • 问题内容: 我在Hibernate中具有以下一对一关系(可能为null): 我正在尝试使用HQL选择所有具有非空详细信息的实体: 但这会返回所有实体,无论详细信息是否为空。 那么正确的HQL是什么? 问题答案: 好的,我找到了解决方案:

  • 我在两个表之间有一个关系,其中一个联接表只有一个结果。 当我定义一个Laravel-BelongToMany关系时,我希望它单独返回该项,而不是只返回一个元素的集合。 有没有一种方法可以在Laravel中对此进行建模? 提前感谢。 [编辑] 我将尝试使用经典的用户/角色示例来解释我想要什么。除了de和表之外,我们还有一个pivot表,它将存储用户拥有的所有角色。用户在任何给定时间只能有一个活动角色

  • 我正在我的web应用程序中运行以下sql查询: 我期望结果为true(布尔数据),但我得到的是false的t或f。我如何让它返回到我的lua代码一个标准的布尔值? 我发现了以下帖子: 用PHP正确读取Postgres中的布尔值 所以我试着把代码改成这样: 或 但是我有一个语法错误<你能告诉我最好的处理方法吗?我是否应该以某种方式将结果“t”转换为布尔值?或者有没有办法告诉postgresql返回t