'int', 'campaignId' => 'int', 'createdAt' => DateTime::class, 'updatedAt' => DateTime::class, 'status' => CampaignPageStatus::class, 'content' => 'string' ]; public $relationships = [ 'campaign' => Relationship::BELONGS_TO, ]; /** * @since 4.0.0 */ public function getEditLinkUrl(): string { // By default, the URL is encoded for display purposes. // Setting any other value prevents encoding the URL. return get_edit_post_link($this->id, 'redirect'); } /** * @since 4.0.0 */ public function campaign(): ?Campaign { return Campaign::find($this->campaignId); } /** * @since 4.0.0 */ public static function find($id): ?CampaignPage { return give(CampaignPageRepository::class)->getById($id); } /** * @since 4.0.0 */ public static function create(array $attributes): CampaignPage { $campaignPage = new static($attributes); give(CampaignPageRepository::class)->insert($campaignPage); return $campaignPage; } /** * @since 4.0.0 */ public function save(): void { if (!$this->id) { give(CampaignPageRepository::class)->insert($this); } else { give(CampaignPageRepository::class)->update($this); } } /** * @since 4.0.0 */ public function delete(): bool { return give(CampaignPageRepository::class)->delete($this); } /** * @since 4.0.0 * * @return ModelQueryBuilder */ public static function query(): ModelQueryBuilder { return give(CampaignPageRepository::class)->prepareQuery(); } /** * @since 4.0.0 */ public static function fromQueryBuilderObject($object): CampaignPage { return new CampaignPage([ 'id' => (int) $object->id, 'campaignId' => (int) $object->campaignId, 'createdAt' => Temporal::toDateTime($object->createdAt), 'updatedAt' => Temporal::toDateTime($object->updatedAt), 'status' => new CampaignPageStatus($object->status), 'content' => $object->content ]); } }