作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们有以下模型:一个Warrior
、一个Axe
和一个Sword
有没有办法使以下行为成为可能?
$warrior->weapon = $sword;
// ...
或
$warrior->weapon = $axe;
// ...
换句话说,是否可以将单独的模型视为具有相似类型的 Eloquent?
附注
显然,上面是一个问题的简化示例,仅用于传达其要点。
最佳答案
是的,你可以将武器
制作为polymorphic relation 。将 weapon_type
和 weapon_id
列添加到您的表中,这可以在具有 morphs
类型的迁移文件中完成:
Schema::table('warriors', function ($table) {
$table->morphs('weapon');
});
现在您已准备好将您的关系添加到 Warrior
模型中:
public function weapon() {
return $this->morphTo();
}
就是这样!现在您可以添加武器,Eloquent 将处理剩下的事情。该关系甚至支持急切加载。我建议你所有的武器都应该实现一个接口(interface),这样你就知道它们有哪些共同的方法,但不幸的是,Eloquent 无法通过 PHP 类型系统为你强制执行该接口(interface)。
关于laravel - Laravel 5 中的反向多态关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40065320/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!