thinkphp6.x出现的问题多对多模型关联belongsToMany的中间表pivot取不出数据
2021/11/3 17:11:57
本文主要是介绍thinkphp6.x出现的问题多对多模型关联belongsToMany的中间表pivot取不出数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
public function role() { return $this->belongsToMany(Role::class, Access::class, 'role_id', 'auth_id'); }
这样取不到中间表数据
AuthModel::find(2)->role
解决
\vendor\topthink\think-orm\src\model\relation\BelongsToMany.php 中 getRelation 替换成旧版本的
/** * 延迟获取关联数据 * @access public * @param array $subRelation 子关联名 * @param Closure $closure 闭包查询条件 * @return Collection */ public function getRelation(array $subRelation = [], Closure $closure = null): Collection { if ($closure) { $closure($this->getClosureType($closure)); } $result = $this->buildQuery() ->relation($subRelation) ->select() ->setParent(clone $this->parent); $this->hydratePivot($result); return $result; } /** * 创建关联查询Query对象 * @access protected * @return Query */ protected function buildQuery(): Query { $foreignKey = $this->foreignKey; $localKey = $this->localKey; // 关联查询 $condition = ['pivot.' . $localKey, '=', $this->parent->getKey()]; return $this->belongsToManyQuery($foreignKey, $localKey, [$condition]); }
拓展知识
laravel中可以通过在后面追加withPivot(['role_id','auth_id']) 来添加中间表字段
tp6默认取出中间表字段,可以通过 hiden(['pivot']) 隐藏整个中间表字段数据,或者隐藏指定字段
hiden(['pivot.role_id']);
参考地址:
https://blog.csdn.net/bluebird2/article/details/115106936
这篇关于thinkphp6.x出现的问题多对多模型关联belongsToMany的中间表pivot取不出数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01用php和mysql写无限分类,有哪几种方法-icode9专业技术文章分享
- 2024-10-31php数据分表导出时部分数据无法导出什么原因-icode9专业技术文章分享
- 2024-10-30有经验的 PHP 开发者学习一门新的编程语言,有哪些推荐的有前景的语言-icode9专业技术文章分享
- 2024-10-21php 检测图片是否篡改过-icode9专业技术文章分享
- 2024-10-20fruitcake/php-cors 该怎么使用-icode9专业技术文章分享
- 2024-10-18PHP7.1可以使用哪个版本的swoole-icode9专业技术文章分享
- 2024-10-17php8 执行php -v提示 command not found是什么原因?-icode9专业技术文章分享
- 2024-10-17nginx 怎么配置 php?-icode9专业技术文章分享
- 2024-09-28怎么把PHP程序打包?-icode9专业技术文章分享
- 2024-09-28怎么用Phar打包PHP程序?-icode9专业技术文章分享