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

Laravel Belongasmany获得一项记录

施晗昱
2023-03-14

我有以下三个表格:

用户id|名称|用户名|密码

角色id|name

用户|角色id |用户|角色| id

这些表通过belongtomany进行通信。表用户\u角色有许多记录。用户可以更改其角色,但我必须存储每次更改。

第一。如何与用户一起获取最后一个和单个角色\u id?

$users = User::with('roles')->get();

现在,我得到了具有两个角色的用户(2),但我需要具有单个和最后一个角色(3)的用户(2)。

第二。如何访问角色-

@foreach($users as $user)
    {{ $user->name }} <<< normal
    {{ $user->roles['name']}}  <<I'm getting error here  

共有2个答案

公冶安怡
2023-03-14

你可以用whereHas

 $users = User::with('roles')->whereHas('roles', function ($q) {
        $q->latest();
    })->get();
程和煦
2023-03-14

角色将是一个集合,因此您可以使用last()方法,并具有以下内容:

$user->roles->last()->name;

或者,如果您可以更新到Laravel

用户模型中创建新关系:

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

然后用latestRole加载角色:

$users = User::with('latestRole')->get();

通过这种方式,您可以直接访问关系:

@foreach($users as $user)
    {{ $user->latestRole->name }}
 类似资料:
  • 问题内容: 我需要从数据库获取最新记录。我正在使用sqlalchemy。此刻,我正在那样做: 但是查询太繁琐了。我怎样才能更好地获得最近的记录? 问题答案: 看一看。如果你在右列上指定排序,则第一个将是你的最后一个。一个示例可能如下所示:

  • 方向 算法工程方向 一面: 上来就问了写代码需要注意的事项,类似于内种命名法,写注释之类的。感觉面试官主要考察深度和广度,问了很多有没有用过这个这个的问题。考的八股除了传统的还问了一些消息队列,c++实现多读单写,如何定位内存泄露,谈谈对接口的理解之类的问题。最后让手撕一个熟悉的排序五分钟写完,我说五分钟可能写不完。面试官就直接让我说了思路,讲了讲快排。 二面: 主要围绕着简历问了一些问题,比较发

  • 问题内容: 在多表查询中,每条记录只能获得一行? 我有这三个表: 苹果 疲劳风险管理系统 FARM_APPLES 使用此表,我需要以下结果: 非常感谢您的任何帮助,在此先感谢您。 编辑 感谢OMG Ponies和Bill,我将尽力尝试您的两种解决方案,这是最后一件事,它有可能获得以下结果: 问题答案: Firebird 2.0支持CASE表达式,因此您可以使用:

  • 我想要的是,每当数据被推入表中时,我的电子邮件(我已经配置了db_mail并正在工作)上会自动发出警报。 我在数据库和Windows server 2012 R2上拥有sa管理和完全权限

  • 问题内容: 我有一个模板,仅当当前项目与上一个项目具有某些不同的字段时,才想在其中生成一些HTML。如何在ng-repeat中访问上一个项目? 问题答案: 你可以做类似的事情 JS 演示:小提琴 注意: 是针对指令数组的,它可能与作用域数组不同。使用内联变量访问正确的数组。 如果您筛选或订购,则为。

  • 我使用从获取值。我需要做记录, 我尝试使用以下代码: 但是当在中的