laravel雄辩模型的模块模型关系特征
我将我的代码分成几个小的包,利用这些包为我将要开发的其他应用程序重用的好处。() 示例包列表:laravel雄辩模型的模块模型关系特征,laravel,architecture,eloquent,package,entity-relationship,Laravel,Architecture,Eloquent,Package,Entity Relationship,我将我的代码分成几个小的包,利用这些包为我将要开发的其他应用程序重用的好处。() 示例包列表: UserPackage(可以组合为Access或AuthPackage,仅举一个例子) 角色包(可以组合为Access或AuthPackage,仅举一个例子) PermissionPackage(可以组合为Access或AuthPackage,仅举一个例子) ContactPackage 地址包(可变形关系) 如果一个应用程序需要一些软件包,你只需要编写程序就可以了。所以并不是所有的都会被使用。
- UserPackage(可以组合为Access或AuthPackage,仅举一个例子)
- 角色包(可以组合为Access或AuthPackage,仅举一个例子)
- PermissionPackage(可以组合为Access或AuthPackage,仅举一个例子)
- ContactPackage
- 地址包(可变形关系)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Permissions extends Model
{
/*
* Every Model has a Relationships trait
* containing all possible relationships
*/
use \App\Traits\PermissionRelationships;
//
}
具有所有关系,即使关系的模型不存在
2。hassrelationtrait再举一个模型示例:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/*
* Implements the required relationships
*/
use \App\Traits\Relationships\HasRoles; // or roleable
use \App\Traits\Relationships\HasPermissions; // or permissionable
//
}
权限特征:
namespace App\Traits\Relationships;
trait HasPermissions
{
public function permissions()
{
return $this->belongsToMany(Permission::class);
}
}
在这里,我可以在一个模型上实现这个特性,我决定使用这个关系,即使它不适合这个模型。(我假设会有不合理的组合)
也许有第三种方法我没有想到,但当我研究这两种方法时,我无法找到一个对我的包体系结构有益的好解决方案。在这种情况下该怎么办
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/*
* Implements the required relationships
*/
use \App\Traits\Relationships\HasRoles; // or roleable
use \App\Traits\Relationships\HasPermissions; // or permissionable
//
}
namespace App\Traits\Relationships;
trait HasRoles
{
public function roles()
{
return $this->belongsToMany(Role::class);
}
}
namespace App\Traits\Relationships;
trait HasPermissions
{
public function permissions()
{
return $this->belongsToMany(Permission::class);
}
}