laravel - Laravel Eloquent,在相关模型中将自定义列确定为外键
问题描述
经过研究,我找不到令人满意的答案,我就在这里。我有一个 laravel 雄辩的模型关系如下;
public function modules () {
return $this->belongsToMany('App\Module', 'user_modules', 'user_id', 'module_id');
}
作为默认 laravel 将用户模型的 id 与模块模型中的 user_id 列配对,但我有另一个名为 parent_user_id 的列,我想将用户模型的 parent_user_id 列与模块模型中的 user_id 列配对。这可能吗?如何?非常感谢..我希望这对其他人有帮助。
解决方案
看一下定义BelongsToMany
:
https ://github.com/laravel/framework/blob/7.x/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php#L149
您会看到有更多选项可提供给构造函数。
现在$builder
由 Laravel 注入,所以从模型开始:
Model $parent,
$table,
$foreignPivotKey,
$relatedPivotKey,
$parentKey,
$relatedKey,
$relationName = null
您已经定义了前 4 个。在您的情况下,您需要定义relatedKey
,您需要设置它以匹配您的自定义 id 字段。
推荐阅读
- vue.js - Vue CLI:将默认样式语言设置为 scss
- ubuntu - 调用 freeze_bdev() 会导致内核错误
- python - setup.py:添加安装所需的依赖项
- docker - 是否有 `docker up` 命令,例如 `vagrant up`?
- powershell - 在for循环中循环多个变量
- javascript - ASP.NET MVC 控制器在返回响应之前等待模型
- puppet - 在 Puppet 中循环多个变量
- angular - Angular6 提交表单的 iframe
- linux - Python - 处理图像时 Spyder 上的 CV2 奇怪行为
- ember.js - 什么是灰烬金属?