gpt4 book ai didi

laravel - Laravel 5 中的反向多态关系

转载 作者:行者123 更新时间:2023-12-02 10:48:53 24 4
gpt4 key购买 nike

假设我们有以下模型:一个Warrior、一个Axe和一个Sword

有没有办法使以下行为成为可能?

$warrior->weapon = $sword;
// ...

$warrior->weapon = $axe;
// ...

换句话说,是否可以将单独的模型视为具有相似类型的 Eloquent

附注

显然,上面是一个问题的简化示例,仅用于传达其要点。

最佳答案

是的,你可以将武器制作为polymorphic relation 。将 weapon_typeweapon_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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com