我有一个名为Company\Contact\Models\Contact
的包装模型
我有一个名为App\Models\MenuItem
的本地模型
菜单项是具有以下内容的多态表:
id
menuable_id
menuable_type
当我在\App\Models\Page
之类的本地模型上使用它时,它可以正常工作。当我在我的menuable
模型中调用MenuItem
关系时,该关系为:
public function menuable()
{
return $this->morphTo();
}
$menuitem->menuable
它为我提供了很好的,完美的页面模型实例。但是,当我在任何封装模型上执行此操作时,它就是null
。
我尝试绑定模型:
$this->app->bind('Company\Contact\Models\Contact', function () {
return new Contact;
});
但这没用。
然后我尝试在AppServiceProvider
启动中映射它:
use Company\Contact\Models\Contact; // This does dump an instance of the contact model.
Relation::morphMap([
'Company\Contact\Models\Contact' => Contact::class,
]);
有人知道该怎么做吗?
请告知我是否可以提供更多信息。
答案 0 :(得分:1)
您可以在自己的应用程序代码库中扩展软件包模型。在您的App/Models
目录中创建一个新的 Contact 类:
<?php
namespace App\Models;
use Company\Contact\Models\Contact as CompanyContact;
class Contact extends CompanyContact
{
// your polymorphic relationship methods
}
现在,您可以在应用程序中使用App\ModelContact
模型,而不是软件包模型。