Guest User

Untitled

a guest
Jan 12th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Traits\Models;
  4.  
  5. use App\Models\Address;
  6.  
  7. /**
  8. * Class HasAddressTrait
  9. *
  10. * @package App\Traits\Models
  11. */
  12. trait HasAddressTrait
  13. {
  14. /**
  15. * Relation to addresses
  16. *
  17. * @return \Illuminate\Database\Eloquent\Relations\MorphMany
  18. */
  19. public function addresses()
  20. {
  21. return $this->morphMany(Address::class, 'addressable');
  22. }
  23.  
  24. public function getAddressAttribute()
  25. {
  26. return $this->address();
  27. }
  28.  
  29. /**
  30. * Get Address
  31. *
  32. * @return mixed
  33. */
  34. public function address()
  35. {
  36. return ($this->addresses) ? $this->addresses->first() : null;
  37. }
  38.  
  39. /**
  40. * Address details fill
  41. *
  42. * @param array $attributes
  43. */
  44. protected function fillAddress(array $attributes)
  45. {
  46. if (!isset($attributes['addresses']) or !is_array($attributes['addresses'])) {
  47. return false;
  48. }
  49.  
  50. $this->addresses()->delete();
  51. foreach ($attributes['addresses'] as $address) {
  52. $this->addresses()->create($address);
  53. }
  54.  
  55. return true;
  56. }
  57.  
  58. /**
  59. * Get Full Address
  60. *
  61. * @return null|string
  62. */
  63. public function getFullAddress()
  64. {
  65. $address = $this->address();
  66. if (!$address) {
  67. return null;
  68. }
  69. $address = [
  70. $address->postcode,
  71. $address->country,
  72. $address->city,
  73. $address->region,
  74. $address->street,
  75. $address->house,
  76. ];
  77. return implode(', ', $address);
  78. }
  79.  
  80. }
Add Comment
Please, Sign In to add comment