bulletdigitalsolutions / doctrine-cashier
使您能够在 doctrine 上使用 cashier
v1.0.6
2024-08-15 12:00 UTC
Requires
- php: ^8.0
- bulletdigitalsolutions/doctrine-eloquent: 1.0.2
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
- laravel-doctrine/acl: ^1.0
- laravel-doctrine/extensions: ^1.0
- laravel-doctrine/orm: ^1.8|^2.0
- laravel/cashier: ^13.12|^14.7|^15.2
Requires (Dev)
- laravel/pint: ^1.1
README
此包处于早期开发阶段,尚未经过生产使用测试。
此处应放置您的描述。尽量限制为一到两段,并可能提及您支持的 PSRs 以避免用户和贡献者产生混淆。
安装
您可以通过 composer 安装此包
composer require bulletdigitalsolutions/doctrine-cashier
使用
您的用户实体应扩展 BillableEntity 类
/** * @ORM\Table() * @ORM\Entity * @Gedmo\Loggable(logEntryClass="App\Entities\Audit") */ class User extends BillableEntity
您的用户实体必须实现 getRepository,该方法返回一个实现了 BillableEntityContract 的仓库
public function getRepository() { return app(UserContract::class); }
class UserRepository extends CoreRepository implements UserContract { use TwoFactorRepository, BillableRepository;
然后您需要扩展 Subscription 和 SubscriptionItem 实体
<?php namespace App\Entities; use BulletDigitalSolutions\DoctrineCashier\Contracts\UserSubscriptionContract; use BulletDigitalSolutions\DoctrineCashier\Entities\UserSubscription as BaseSubscription; use Doctrine\ORM\Mapping as ORM; use Gedmo\Mapping\Annotation as Gedmo; /** * @ORM\Table * @ORM\Entity * @Gedmo\Loggable(logEntryClass="App\Entities\Audit") */ class Subscription extends BaseSubscription implements UserSubscriptionContract { /** * @ORM\Column(type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ protected $id; /** * @ORM\ManyToOne(targetEntity="User") * @ORM\JoinColumn(referencedColumnName="id") */ protected $user; /** * @return mixed */ public function getId() { return $this->id; } /** * @param mixed $id */ public function setId($id): void { $this->id = $id; } /** * @return mixed */ public function getUser() { return $this->user; } /** * @param mixed $user */ public function setUser($user): void { $this->user = $user; } }
<?php namespace App\Entities; use BulletDigitalSolutions\DoctrineCashier\Contracts\UserSubscriptionItemContract; use BulletDigitalSolutions\DoctrineCashier\Entities\UserSubscriptionItem as BaseSubscriptionItem; use Doctrine\ORM\Mapping as ORM; use Gedmo\Mapping\Annotation as Gedmo; /** * @ORM\Table * @ORM\Entity * @Gedmo\Loggable(logEntryClass="App\Entities\Audit") */ class SubscriptionItem extends BaseSubscriptionItem implements UserSubscriptionItemContract { /** * @ORM\Column(type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ protected $id; /** * @ORM\ManyToOne(targetEntity="Subscription", inversedBy="items") * @ORM\JoinColumn(referencedColumnName="id") */ protected $subscription; /** * @return mixed */ public function getId() { return $this->id; } /** * @param mixed $id */ public function setId($id): void { $this->id = $id; } /** * @return mixed */ public function getSubscription() { return $this->subscription; } /** * @param mixed $subscription */ public function setSubscription($subscription): void { $this->subscription = $subscription; } }
然后您需要在 CashierServiceProvider 上注册您的实体
<?php namespace App\Providers; use App\Entities\Subscription; use App\Entities\SubscriptionItem; use App\Entities\User; use Illuminate\Support\ServiceProvider; use BulletDigitalSolutions\DoctrineCashier\Cashier; class CashierServiceProvider extends ServiceProvider { /** * Register services. * * @return void */ public function register() { Cashier::ignoreMigrations(); } /** * Bootstrap services. * * @return void */ public function boot() { Cashier::useSubscriptionModel(Subscription::class); Cashier::useSubscriptionItemModel(SubscriptionItem::class); Cashier::useCustomerModel(User::class); } }
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近的变化。
贡献
请参阅 CONTRIBUTING 了解详情。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 andrew@bulletdigitalsolutions.co.uk 联系,而不是使用问题跟踪器。
致谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。
Laravel 包模板
此包使用 Laravel 包模板 生成。