首页 > 解决方案 > 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 列配对。这可能吗?如何?非常感谢..我希望这对其他人有帮助。

标签: laraveleloquentrelationship

解决方案


看一下定义BelongsToManyhttps ://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 字段。


推荐阅读