【问题标题】:What is the rule to create a polymorphic field name in Laravel?在 Laravel 中创建多态字段名称的规则是什么?
【发布时间】:2015-12-19 22:30:08
【问题描述】:

我不是第一次使用 Laravel,但这是我第一次需要/想要使用多态关系。 我在 Laravel.com 上看到了一个示例,它说我应该将 'imageable_id' 用于名为 'images' 的表,在另一个示例中,我看到了 'commentable_id ' 到表 'cmets'

有创建名字的规则吗?

例如:我想创建一个表'category',用于'posts''settings'。在这种情况下,我应该使用 'categoryable_id' 作为名称吗?

【问题讨论】:

    标签: php laravel eloquent relationship polymorphic-associations


    【解决方案1】:

    没有规则,除了默认约定。默认情况下,您定义前缀,Laravel 将设置 _id 和 _type 后缀。该字段由您在关系中定义的内容确定:

    例如,在帖子或设置上:

    public function category()
    {
        return $this->morphMany('App\Category', 'categoryable');
    }
    

    这样,您的模型将在表 Category 中搜索 categoryable_id 和 categoryable_type。 categoryable_id 默认将匹配您的模型 ID,而 categoryable_type 将匹配您模型的 FQCN(例如“App\Post”)。

    如果你想改变 Laravel 设置多态列名的方式,你可以使用相同方法的第三个和第四个参数来设置,例如:

    public function category()
    {
        return $this->morphMany('App\Category', 'categoryable', 'model_type', 'model_id');
    }
    

    所以没有真正的规则。您可以随意定义它,也可以使用默认约定。

    来源:http://laravel.com/docs/5.1/eloquent-relationships#many-to-many-polymorphic-relations

    【讨论】:

      猜你喜欢
      • 2018-09-24
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-21
      • 2023-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多