laravel - 是否可以自定义 laravel eloquent morphToMany 的 name_type 列?

标签 laravel laravel-5 eloquent

我们可以自定义morphMany $type

变形许多

public function morphMany($related, $name, $type = null, $id = null, $localKey = null)

通过使用官方文档示例。我可以通过将第三个参数 $typecommentable_object 一起传递,将数据库架构中的 commentable_type 更改为 commentable_object

comments
id - integer
body - text
commentable_id - integer
commentable_type - string

但是,morphToMany函数没有this参数。

这里是morphToMany的源代码

public function __construct(Builder $query, Model $parent, $name, $table, $foreignPivotKey, $relatedPivotKey, $parentKey, $relatedKey, $relationName = null, $inverse = false)
{
    $this->inverse = $inverse;
    $this->morphType = $name.'_type';
    $this->morphClass = $inverse ? $query->getModel()->getMorphClass() : $parent->getMorphClass();
    parent::__construct(
        $query, $parent, $table, $foreignPivotKey,
        $relatedPivotKey, $parentKey, $relatedKey, $relationName
    );
}

它总是使用

$this->morphType = $name.'_type';

创建morphType。为什么 morphToMany 不允许更改 $type 列的名称?

最佳答案

目前还不可能。 A similar question was askedLaravel github issues ,结论是不能定制。

如果您希望在未来的 Laravel 版本中看到这一点的改变,我建议您在 Laravel Ideas 上提交问题。 repo 协议(protocol)。

或者,您可以 fork Laravel 存储库并自定义源代码以满足您的需求。

关于laravel - 是否可以自定义 laravel eloquent morphToMany 的 name_type 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49716077/

相关文章:

laravel - 在 Laravel 中模拟数据以与 Vue.js 一起使用

javascript - Laravel 5 在 JS 末尾添加无效字符

mysql - Laravel 查询过滤器审查与关系

php - Laravel Eloquent 关系获取记录到第三级关系

php - Laravel:自定义登录重定向到/home 而不是/welcome 页面

mysql - 在 Laravel 中使用 whereHas 从子查询中选择 SUM

php - Laravel - Controller 在应用程序中调用存储库

php - Laravel SQL 查询返回错误结果

php - Laravel Eloquent : Model attribute with conditional concatenation

php - Laravel 5 播种