Laravel具有双重变形关系的命名约定

时间:2020-05-04 13:29:23

标签: laravel polymorphic-associations

在1个表(模型)上具有2个变形关系时,Laravels中的正确命名约定是什么?

示例:

posts
    id - integer
    title - string
    body - text

videos
    id - integer
    title - string
    url - string

buyers
    id - integer
    name - string

sellers
    id - integer
    name - string

comments
    id - integer
    body - text
    commentable1_id - integer // link to video/posts
    commentable1_type - string // type link to video/posts
    commentable2_id - integer // link to buyers/sellers
    commentable2_type - string // type link to buyers/sellers

现在我正在使用namme commentable1commentable2,但这不是Laravel的一种很好的方法。如何以正确的Laravel方法做到这一点?

1 个答案:

答案 0 :(得分:0)

我想这将更多地取决于个人喜好,如果我愿意的话,我会这样做的

commentable1_id would be video_post_id
commentable1_type would be video_post_type
commentable2_id would be buyer_seller_id
commentable2_type would be buyer_seller_type

这对于另一个人可能有所不同,但是对我来说,这是可以自我解释的,所以我会使用它。考虑到您将使主要模型名称保持不变,如果您进行更改,它将相应地更改。

如果要匹配laravel标准。

例如,您的视频属于帖子,则列名将仅为videoable_type,其他两列分别为videoable_idsellerable_id和{{1 }}。

Reference