php – 如何在使用接口时定义关系
发布时间:2020-12-13 13:20:25 所属栏目:PHP教程 来源:网络整理
导读:Post – User – Image示例很好地涵盖了Laravel中多态关系的正常使用. 我试图找到一种干净的方式来实现关系,让我们说一个Article / ContentA / ContentB关系. articles idcontent_1 idcontent_2 iduser_defined_content_n idcontentables article_id content
Post – User –
Image示例很好地涵盖了Laravel中多态关系的正常使用.
我试图找到一种干净的方式来实现关系,让我们说一个Article / ContentA / ContentB关系. articles id content_1 id content_2 id user_defined_content_n id contentables article_id contentable_id contentable_type // content_2,user_defined_content_n 本文不一定知道内容类,因此定义具有许多MorphedByMany关系的文章模型不是我想要这样做的方式. 也许我正在很好地构建我的课程.我可以创建一个ContentEntity类,它变换为单个Content类,但我想尽可能避免这种情况. 也许这更能解释我的问题. class Article extends Model { public function contentEntities() { return $this->hasMany(ContentEntity::class); } } class ContentEntity extends Model { public function contentable() { return $this->morphTo(); } } class Content extends Model { public function contentEntity() { return $this->morphOne(ContentEntity::class,'contentable'); } } class Video extends Model { public function contentEntity() { $this->morphOne(ContentEntity::class,'contentable'); } } 这有效,但对我来说似乎非常不洁净.我认为它必须增??加太多的开发人员开销来管理ContentEntity父级. 编辑:
您总是可以将关系提取到特征,以便将来更容易维护和扩展:
特征 trait Contentable { public function contentEntity() { if(property_exists($this,'contentable') && $contentable == 'many') { return $this->hasMany(ContentEntity::class); } else { return $this->morphOne(ContentEntity::class,'contentable'); } } // Future implementations } 然后你需要做的就是在各种实体中使用特征: 楷模 class Content extends Model { use Contentable; } class Video extends Model { use Contentable; } class Article extends Model { use Contentable; protected $contentable = 'many'; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- php – 在Woocommerce 3中更改购物车商品价格
- php array_walk_recursive 使用自定的函数处理数
- php – sem_release():无法释放密钥0xc:无效的
- zend-framework – 如何防止Zend Framework 1解析
- 我应该用php string cast vs strval函数?
- PHP 5.5.x中不推荐使用的MySQL扩展
- vs中通过剪切板循环来循环粘贴不同内容
- 列举PHP的Yii 2框架的开发优势
- php – pecl install cassandra throws:“错误:
- php – Fat Free Framework(F3):自定义404页面(
热点阅读