首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从belongsToMany关系中获取相关ID的数组- Laravel 5.4

在Laravel 5.4中,可以通过belongsToMany关系来建立多对多的关联关系。当需要从belongsToMany关系中获取相关ID的数组时,可以使用Laravel提供的方法来实现。

首先,确保在相关的模型中定义了belongsToMany关系。例如,假设我们有两个模型:User和Role,它们之间是多对多的关系。在User模型中,我们可以定义如下的belongsToMany关系:

代码语言:php
复制
public function roles()
{
    return $this->belongsToMany(Role::class);
}

接下来,我们可以通过以下方式来获取相关ID的数组:

代码语言:php
复制
$user = User::find($userId);
$roleIds = $user->roles()->pluck('id')->toArray();

上述代码中,我们首先通过User模型的find方法获取到指定ID的用户对象$user。然后,通过$user->roles()方法获取到该用户所关联的角色对象集合。最后,通过pluck方法获取到角色对象集合中的id属性,并使用toArray方法将其转换为数组。

这样,$roleIds就是包含了用户所关联的角色ID的数组。

关于Laravel的belongsToMany关系以及其他相关概念、分类、优势、应用场景,你可以参考腾讯云的Laravel云托管服务。该服务提供了全托管的Laravel框架环境,支持快速部署和管理Laravel应用,同时提供了丰富的功能和工具来简化开发和部署过程。

腾讯云Laravel云托管服务介绍链接地址:https://cloud.tencent.com/product/laravel

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

浅谈laravel5.5 belongsToMany自身正确用法

场景 用户之间相互关注,记录这种关系是followers表(follower_id 发起关注的人 followed_id被关注的人) 现在多对多关系就不再是传统三张表关系了, 这种情况 多对多关系应该怎么声明呢...分析 laravel或者其他框架多对多关系 一般都是由Model1 Model2 Model1_Model2(声明两者关系表)来组成, 但是上面的场景 却是只有两张表,这时候就要研究下官方文档了...方法传递参数是可以定制 以达到个性化需求, 第一个参数是 第二个Model 第二个参数是 关系表名 第三个参数是 第一个Model在关系外键ID 第四个参数是 第二个Model在关系外键...关系表名是 ‘followers’ /** * 关注当前用户 * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany...} 以上这篇浅谈laravel5.5 belongsToMany自身正确用法就是小编分享给大家全部内容了,希望能给大家一个参考。

1.2K31

Laravel源码分析之模型关联

实例,与定义一对多关联时一样,实例化BelongsToMany时定义里与关联相关配置:中间表名、关联模型、父模型在中间表外键名、关联模型在中间表外键名、父模型主键、关联模型主键、关联关系名称...users ON users.id = posts.user_id WHERE users.country_id = 1 SQL查询我们也可以看到远层一对多跟多对多生成语句非常类似,唯一区别就是它中间表对应是一个已定义模型...,在获取关联模型时给关系应用约束 addEagerConstraints方法是在具体关联类定义,我们可以看下HasMany类这个方法。...,接下来通过 getEager方法获取所有的关联模型组成集合,再通过关联类里定义match方法把外键值等于父模型主键值关联模型组织成集合设置到父模型 $relations属性接下来用到了这些预加载关联模型时都是...模型关联常用一些功能底层实现到这里梳理完了,Laravel把我们平常用join, where in 和子查询都隐藏在了底层实现并且帮我们把相互关联数据做好了匹配。

9.5K10

Laravel中使用路由控制权限(不限于Laravel,只是一种思想)

每一个页面认证当前需要权限一次 在统一地方(中间件)验证 先上一下简单表结构(只保留重要信息)数据库模型 ER 图 数据库模型图 (ps:这个设计,用户不会直接拥有权限,只能通过角色继承权限...{ return $this->belongsToMany(User::class); } // 角色和权限模型关联关系 public function permissions...这时候插入数据时候,我们只要做好相关录入 +-------+-----------------+------------------+ | id | name |...function handle($request, Closure $next) { /**************************************** * 获取当前路由别名...,如果没有返回 null * (不在 laravel 中使用时,可以获取当前 url) ****************************************/

15610

深入理解 Laravel Eloquent(三)——模型间关系(关联)

在本篇文章,我将跟大家一起学习 Eloquent 中最复杂也是最难理解部分——模型间关系。...官方英文文档叫 Relationships,个人认为翻译成 “模型间关系” 比现在 “关联” 更好理解一点哈哈。...... account_id account: id ... ... user_id 假设我们需要在 User 模型查询对应 Account 表信息,那么代码应该是这样。...pay: id ... ... user_id User 和 Pay 具有一对多关系,换句话说就是一个 User 可以有多个 Pay,这样的话,只在 Pay 表存在一个 `user_id` 字段即可。...---- 至此,深入理解 Laravel Eloquent 系列文章到此结束。推荐继续了解 软删除 、转换成数组/JSON。 END

2.6K30

Laravel学习记录--Model

Laravel 自带 软删除功能 就利用全局作用域数据库中提取「未删除」模型。编写自定义全局作用域可以提供一个方便、简单方法来确保给定模型每个查询都受到一定约束。...相匹配记录 dd($res); } 一对一反向关联 在上面我们muser模型访问到phone模型,现在从phone模型访问muser模型 在此之前我们需在phone模型定义muser...,如果是单条记录获取关联关系,就需要两次查询;如果是多条记录获取关联关系,比如文章列表页获取作者信息,因为每篇文章作者通过动态属性获取都有一次查询,所以对N条记录来说,需要N+1次查询才能返回需要结果...dd($res); } 反向关联 与上述方法基本一致,上述方法我们通过学生id获取其选修课程,现在通过课程id查询选修学生 在Mclass模型定义一个stus方法,这个方法还是调用belongsToMany...,sync方法接受ID数组,向中间表插入对应关联数据记录,在这里没有被放在数组id会从中间表移除。

13.4K20

Laravel 模型操作中一次奇妙踩坑经历

最近被 Laravel 模型一些小问题折腾死去活来,明明看着很清晰很明了代码,却偏偏不能实现功能,现在带大家来切身经历一下这次奇妙踩坑经历,代码看似很多,实则不多,大家别急着跑,哈哈。...准备 需求: 获取项目下所有任务,且需要合并公共任务 逻辑关系: • 一个项目有很多任务• 一个项目有很多项目成员• 一个任务有一个执行人 (当任务类型为:1 时候为公共事务)• 一个人有多个项目...', $project->id); }])->keyBy('name'); // 不太清楚 请看 scope 相关知识 $commonTasks = Task::ofCommonTask...attributes 做更改,这一点也可以 Model __set 魔术方法中看到,其中是有调用一个 setAttribute 方法,我们来看一下: ?...明显看到 toArray 方法将 attributes 和 relations 转化成数组了,而且用 array_merge 方法,大家知道相同 key 时候,后面数组会覆盖前面数组,从前面的测试可以看到

1.6K30

Laravel多对多关系详解【文章 - 标签】

前言 今天弄了一天关于文章功能,其中主要卡在文章与标签多对多关系纠结。卡了半天,终于算是解决了,不是很完美,但可以。 新建迁移文件 多对多关系,需要三张表。...这是我是文章表【articles】、标签表【tags】以及关系表【article_tag】 其中关系命名是[article_tag]而不是tag_article 因为laravel默认是以字母升序排列...包含article_id一样记录也删除 执行迁移 php artisan migrate 声明Eloquent关系 Article ?...我们使用 $this->belongsToMany() 来表明Eloquent关系,这里需要注意是如果你外键并不是 article_id 和 tag_id ,你需要在第三个参数进行设置,写成类似下面这样...后来经过查阅多方资料以及官方文档,才发现,想要标签表值唯一,而关系通过tag_id来标记不能这样写。

1.8K00

Laravel 模型关联基础教程详解

Laravel 定义模型关联是每个 Laravel 开发者可能已经做过不止一次事情。但是在试图实现关联时可能会遇到各种问题。因为 Laravel 有各种各样关联,你应该选择哪一个?...我们通过 hasOne 方法告诉 Laravel User 模型有一个 Passport 。 注意: 所有用于定义关联方法都有可选额外参数,你可以在这些参数定义本地键和外键。...默认情况下,Laravel会假设你在用户模型定义了 passport_id ,因为你试图创建与 passport 模型关联。创建迁移文件时也请注意这一点!...如果每个供应商都有一个用户,并且每个用户与一个用户历史记录相关联,那么供应商可以通过用户访问用户历史记录。...表不包含 supplier_id 列,供应商也可以通过使用 「has one through」 关系访问 product_history 记录。

5.5K31

Laravel Eloquent 模型关联关系详解(上)

你可能注意到了我们在定义关联关系时,仅仅指定了模型类名,并没有指定通过哪些数据表字段建立关联,这并不是说 Laravel 神通广大,能知过去未来之事,而是因为 Eloquent 对此做了默认约定。...如果是单条记录获取关联关系,就需要两次查询;如果是多条记录获取关联关系,比如文章列表页获取作者信息,因为每篇文章作者通过动态属性获取都有一次查询,所以对N条记录来说,需要「N+1」次查询才能返回需要结果...,数据库查询优化角度来说,显然是不合理。...接下来,我们在 Post 模型类定义其与 Tags 模型类关联关系,通过 Eloquent 提供 belongsToMany 方法来实现: public function tags() {...建立相对关联关系 与之前关联关系一样,多对多关联也支持建立相对关联关系,而且由于多对多双方是平等,不存在谁归属谁问题,所以建立相对关联方法都是一样,我们可以在 Tag 模型通过 belongsToMany

9.8K40

Laravel关系模型指定条件查询方法

对于关系模型来说,有时候我们需要甄别关联后结果,例如,班级和学生是一对多关联,我现在查询班级,但是想只显示正常状态,即状态为1学生,因为有的学生从这个班级里面删除了,状态是4,那么我们在查询时候就可以使用如下语法...: 1、定义关联关系: Class模型: public function learners() { return $this- belongsToMany('App\Models\Customer'...$this- belongsToMany('App\Models\MyClass', 'learner_relation', 'learner_id', 'class_id'); } 2、查询代码:...); 然后得到结果就是我们想要正常学生。...以上这篇Laravel关系模型指定条件查询方法就是小编分享给大家全部内容了,希望能给大家一个参考。

1.8K41

Laravel6.0.4将添加计划任务事件方法步骤

让我们来看看这个版本一些亮点新特性: 首先,在 TestResponse 类添加了一个 assertJsonPath() 断言,对于在 JSON 响应中使用针对嵌套属性点符号断言值,这个断言非常方便...($name); $builder- getGlobalMacro($name); $builder- hasGlobalMacro($name); 向 BelongsToMany 关联添加另一个访问方法来获取中间表列...你可以在 Michael Dyrynda 文章 Pull Request #29888 中学习更多这些事件相关内容。相信你朋友。...Laravel 5.8 完整发行说明可在 Github v6 changelog 中找到: Laravel v6.0.4 版本 新增 添加了 TestResponse::assertJsonPath(...中允许 symfony 文件实例 (#30009) 使用自定义配置创建存储模拟数据 (#29999) 仅当语言环境有条件地存在时,才在 pendingmail 设置语言环境 (dd1e0a6) 改进了根目录生成类时按字母顺序对导入进行排序

1.7K21

Laravel5.1框架自带权限控制系统 ACL用法分析

分享给大家供大家参考,具体如下: Laravel在5.1.11版本中加入了Authorization,可以让用户自定义权限,今天分享一种定义权限系统方法。 1....之后就给使用Laravel提供Authorization来定义权限控制了,打开 /app/Providers/AuthServiceProvider.php 文件,在 boot() 添加代码: public...之后生成了两个用户,分别给他们分配了 editor 和 admin 角色,即:ID 1 用户拥有 editor 角色,因此只有 edit-post 权限,而 ID 2 用户拥有 admin 角色,因此具有...更多关于Laravel相关内容感兴趣读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及...《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架PHP程序设计有所帮助。

52161

PHP-web框架Laravel-Eloquent ORM(二)

三、模型关联Laravel框架Eloquent ORM提供了方便模型关联功能,用于定义不同表之间关联关系。下面是几个常用模型关联类型。...定义了一个User模型和一个Phone模型,通过在User模型定义phone方法和在Phone模型定义user方法,实现了这两个模型之间一对一关联关系。...一对多关联一对多关联表示一个模型拥有多个相关模型。下面是一个示例:<?...定义了一个Post模型和一个Comment模型,通过在Post模型定义comments方法和在Comment模型定义post方法,实现了这两个模型之间一对多关联关系。...(User::class); }}上述代码,定义了一个User模型和一个Role模型,通过在User模型定义roles方法和在Role模型定义users方法,实现了这两个模型之间多对多关联关系

61141

谈谈我第一次如何为 Laravel 贡献源码

事情起源是因为在调试一段模型事件时出现,当时随便往数据库里插入了一段字符串 ID,而不是标准 uuid。然后发现我模型事件查找不到当前 ID 模型。...当然,我们不可能总是能遇到问题,也有可能遇到了问题是自己错误,这时候可以去Laravel问题库看一下自己有什么能解决问题 进展 先排除了自己本身代码错误,然后一步一步调试 控制器...事件 Log 打印了一下返回变量,发现belongsToMany::sync方法返回 ID 并不正确。...但我在模型已经设置了主键类型为字符串,这不应该是我想要结果。...溢出 然后我向框架提了一个issues Laravel 组织成员tillkruss 告诉我可以提交一个 PR 然后自己马上行动起来,说实话解决这个问题很简单,因为只要获取主键类型,然后进行强转即可

9810

分享8个Laravel模型时间戳使用技巧小结

其他属性和方法 } 2. 修改时间戳默认列表 假如当前使用是非 Laravel 类型数据库,也就是你时间戳列命名方式与此不同该怎么办?...这个属性确定日期在数据库存储格式,以及在序列化成数组或 JSON 时格式: class Flight extends Model { /** * 日期时间存储格式 * *...在这个模型您可以这样定义关系: class User extends Model { public function roles() { return $this- belongsToMany...并且 Laravel 不会尝试自动填充 created_at/updated_at 但是如果你想自动保存时间戳,您需要在迁移文件添加 created_at/updated_at,然后在模型关联中加上...updated_at,也希望更新上级关系记录。

3.7K31

orm 系列 之 Eloquent演化历程1

Eloquent Eloquent是laravelorm,采取是active record设计模式,里面的对象不仅包括领域逻辑,还包括了数据库操作,但是大家平时使用时候可能没有探究eloquent...时候,里面有个逻辑是: if (count($models) > 0) { $models = $this->eagerLoadRelations($models); } 获取has one关系,...('App\User'); } } 这个关系我们稍微具体讲下,我们在使用上可能会是下面这样子 return $this->belongsToMany('App\Role', 'user_roles...', 'user_id', 'role_id'); 在构造函数,会调用addConstraints方法,如下 // class belongsToMany public function addConstraints...():新增 user_id = 查询表是role,join表user_role 在get时候,其逻辑和HasOne等关系也所有不同,代码如下: // class belongsToMany public

1K30

为什么 Laravel 这么优秀?

虽说 Laravel 5.x 后 Laravel 版本变化比较快,基本一年一个大版本,但它核心几乎 4.X 以来没有发生过特别大变化。...因为我们已经完成了数据表字段定义、表与表关系、以及最重要一步:如何将数据及数据之间关系写入数据库,下面简单来介绍下在 Laravel 是如何完成。...}, "message": "The selected teacher id is invalid." } 得益于 Laravel 强大辅助函数和丰富 API,在下面的代码我们甚至可以做到一行代码就完成课程创建及依赖关系更新...我最喜欢 Laravel Container 一点是它支持获取任何对象,即使容器里没有,它也能给你造一个。...Laravel 会自动帮我们从容器获取它,如果容器不存在,则会尝试初始化它。

16010
领券