私がする必要があるのは、Spatie パーミッション パッケージのロール モデルのすべての機能を拡張することですが、派生モデルには別のテーブルを使用します。
現在、ロールの動作をエミュレートして、権限を割り当てることができ、このモデルをユーザーに割り当てることができるモデル SubscriptionPackage があります。でもロールモデルもそのまま残したい。
はいを拡張しようとしましたが、新しい SubscriptionPackage を作成すると、派生モデルでテーブルを指定しているにもかかわらず、subscription_packages テーブルではなくロール テーブルに新しいレコードが作成されます。以下に示すように
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\Permission; // This extends from Spatie\Permission\Models\Permission
use Spatie\Permission\Models\Role as SpatieRole;
class SubscriptionPackage extends SpatieRole
{
//
protected $guarded = ['id'];
protected $table = 'subscription_packages';
/**
* The permissions that belong to the package.
*/
public function packagePermissions()
{
return $this->belongsToMany(Permission::class);
}
}
上記のコードでは、新しい SubscriptionPackage を作成するときにレコードを subscription_packages テーブルに挿入する必要がありますが、この場合はロール テーブルに移動します。これについてどのように進めるかについての指針は非常に高く評価されます。