php - 为什么扩展类在 Laravel 中与 Modules 没有关系?
问题描述
我有一个Person
类 ( App\Models\Person
) 和一个Organization
类 ( ),它们与( )App\Models\Organization
具有多态关系。我正在使用模块()。在我的启动方法中,我有这种关系:User
App\Models\User
nwidart/laravel-modules
App\Providers\AppServiceProvider
Relation::morphMap(
[
'organizations' => 'App\Models\Organization',
'persons' => 'App\Models\Person',
]
);
现在,我有一个名为 的模块Contracts
,该模块有一个Person
模型 ( Modules\Contracts\Entities\Person
),它从App\Models\Person
. 我还有一个User
模型 ( Modules\Contracts\Entities\User
),它从App\Models\User
. ContractsServiceProvider
我在引导方法中添加了以下代码:
Relation::morphMap(
[
'persons' => 'Modules\Contracts\Entities\Person',
]
);
现在,如果我去任何控制器并加载Person
这样的:
$person = \App\Models\Person::find( 1 );
与的关系User
不存在,所以我做不到$person->users()->first();
但是如果我像这样加载一个人:
$person = \Modules\Contracts\Entities\Person::find( 1 );
这种关系就像一种魅力。
有趣的是,所有与用户的关系方法都在目录中的文件User.php和Person.php 中app\Models
。
在app\Models\User.php我有:
class User extends Authenticatable implements MustVerifyEmail {
public function usable()
{
return $this->morphTo();
}
}
在我的app\Models\Person.php
class Person extends Model {
public function users()
{
return $this->morphMany( User::class, 'usable', 'usable_type', 'usable_id' );
}
}
此外,当我创建一个\App\Models\User
这样的\App\Models\Person
:
$person = \App\Models\Person::find( 1 );
$person->users()->create( [ ... ] );
数据库中users表中的记录是这样的:
+------------------------------------------------------------------------+
| id | email | usable_id | usable_type |
+------------------------------------------------------------------------+
| 1 | some@email.com | 3 | App\Models\Person |
+------------------------------------------------------------------------+
但是,如果我这样创建用户\Modules\Contracts\Entities\Person
:
$person = \Modules\Contracts\Entities\Person::find( 1 );
$person->users()->create( [ ... ] );
数据库中users表中的记录是这样的:
+------------------------------------------------------------------------+
| id | email | usable_id | usable_type |
+------------------------------------------------------------------------+
| 1 | some@email.com | 3 | persons |
+------------------------------------------------------------------------+
我想知道这ContractsServiceProvider
是否以某种方式压倒了AppServiceProvider
我的关系并导致我的关系失败。任何帮助,将不胜感激。
谢谢
解决方案
推荐阅读
- r - 在 LEA 中使用 struct2geno 时,“不允许重复的 'row.names'”
- r - R:替换下划线非连续重复两次以上
- javascript - CSS过渡到特定位置
- javascript - 开发工具在 Electron 中的大小和位置
- node.js - 请求正文必须包含以下参数:'grant_type'...但我把它放在正文中
- php - 如何在内部创建一个自动递增的 ID
- 已经在while循环中的标签?
- wso2 - WSO2 身份服务器多个回调 URL 中断 checksession 端点
- jquery - Jquery隐藏/显示延迟修复
- amazon-s3 - AWS S3 的保留参数名称列表
- ms-access - 表单输入数据访问 2013 中的输入、编辑操作