Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Traits\Models;
- use App\Models\Address;
- /**
- * Class HasAddressTrait
- *
- * @package App\Traits\Models
- */
- trait HasAddressTrait
- {
- /**
- * Relation to addresses
- *
- * @return \Illuminate\Database\Eloquent\Relations\MorphMany
- */
- public function addresses()
- {
- return $this->morphMany(Address::class, 'addressable');
- }
- public function getAddressAttribute()
- {
- return $this->address();
- }
- /**
- * Get Address
- *
- * @return mixed
- */
- public function address()
- {
- return ($this->addresses) ? $this->addresses->first() : null;
- }
- /**
- * Address details fill
- *
- * @param array $attributes
- */
- protected function fillAddress(array $attributes)
- {
- if (!isset($attributes['addresses']) or !is_array($attributes['addresses'])) {
- return false;
- }
- $this->addresses()->delete();
- foreach ($attributes['addresses'] as $address) {
- $this->addresses()->create($address);
- }
- return true;
- }
- /**
- * Get Full Address
- *
- * @return null|string
- */
- public function getFullAddress()
- {
- $address = $this->address();
- if (!$address) {
- return null;
- }
- $address = [
- $address->postcode,
- $address->country,
- $address->city,
- $address->region,
- $address->street,
- $address->house,
- ];
- return implode(', ', $address);
- }
- }
Add Comment
Please, Sign In to add comment