Skip to content

Commit

Permalink
Fixing errors
Browse files Browse the repository at this point in the history
`email_verified_at` column should be the only column to be cast to Datetime format, not all.
Error Fixed
  • Loading branch information
hicham-saddek authored Sep 21, 2021
1 parent a9742cf commit 8562882
Showing 1 changed file with 39 additions and 3 deletions.
42 changes: 39 additions & 3 deletions src/Concerns/EmailField.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ trait EmailField
{
public function initializeEmailField(): void
{
$this->mergeFillable(Arr::wrap($this->getEmailColumn()));
$this->mergeCasts([$this->getEmailColumn(), 'datetime']);
$this->mergeFillable([$this->getEmailColumn(), $this->getEmailVerifiedAtColumn()]);
$this->mergeCasts([$this->getEmailVerifiedAtColumn(), 'datetime']);
}

/**
Expand All @@ -27,6 +27,14 @@ public function getEmailColumn(): string
{
return constVal($this, 'EMAIL_COLUMN', 'email');
}

/**
* @return string
*/
public function getEmailVerifiedAtColumn(): string
{
return constVal($this, 'EMAIL_VERIFIED_AT_COLUMN', 'email_verified_at');
}

/**
* @param Builder $builder
Expand Down Expand Up @@ -59,6 +67,15 @@ public function decideEmailColumn(Builder $builder): string
return count(property_exists($builder, 'joins') ? $builder->joins : []) > 0 ? $this->getQualifiedEmailColumn() : $this->getEmailColumn();
}

/**
* @param Builder $builder
* @return string
*/
public function decideEmailVerifiedAtColumn(Builder $builder): string
{
return count(property_exists($builder, 'joins') ? $builder->joins : []) > 0 ? $this->getQualifiedEmailVerifiedAtColumn() : $this->getEmailVerifiedAtColumn();
}

/**
* @return string
*/
Expand All @@ -67,6 +84,14 @@ public function getQualifiedEmailColumn(): string
return $this->qualifyColumn($this->getEmailColumn());
}

/**
* @return string
*/
public function getQualifiedEmailVerifiedAtColumn(): string
{
return $this->qualifyColumn($this->getEmailVerifiedAtColumn());
}

/**
* @param Builder $builder
* @param string $email
Expand All @@ -88,4 +113,15 @@ public function scopeEmailLike(Builder $builder, string $email, bool $isLike = t
{
return $this->scopeEmail($builder, $email, $isLike ? 'like' : 'not like');
}
}

/**
* @param Builder $builder
* @param string $email
* @param bool $isLike
* @return Builder
*/
public function scopeEmailVerified(Builder $builder, bool $verified = true): Builder
{
return $verified ? $builder->whereNotNull($this->decideEmailVerifiedAtColumn()) : $builder->whereNull($this->decideEmailVerifiedAtColumn());
}
}

0 comments on commit 8562882

Please sign in to comment.