我在laravel中使用了多对多的多态关系 当我阅读文档many-to-many-polymorphic-relations时,它会说
博客文章和视频模型可以与标签模型共享多态关系。
这是表结构:
posts
id - integer
name - string
videos
id - integer
name - string
tags
id - integer
name - string
taggables
tag_id - integer
taggable_id - integer
taggable_type - string
我总是为表格设置一个主键
在这种情况下,我应该添加一个id列作为主键还是我不需要设置主键?
有没有约定?
答案 0 :(得分:0)
在表taggables
中,id自动增量ID不是很有用。对于taggables
eloquent,您可以禁用主键,时间戳:
/**
* primaryKey
*
* @var integer
* @access protected
*/
protected $primaryKey = null;
/**
* Indicates if the IDs are auto-incrementing.
*
* @var bool
*/
public $incrementing = false;
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'taggables';
/**
* Indicates if the model should be timestamped.
*
* @var bool
*/
public $timestamps = false;
要创建主键,可以创建3列复合主键。
创建复合主键时,您可能需要考虑列顺序。
这取决于应用程序的用例。如果它始终查询帖子/视频的标签,则应创建此主键PRIMARY KEY(taggable_type, taggable_id, tag_id)
。如果是另一种情况,它始终会查询标记的帖子/视频,则应创建此主键PRIMARY KEY(tag_id, taggable_type, taggable_id)
。