belongsTo(User::class); } public function address() { return $this->belongsTo(Address::class); } public function tips() { return $this->hasManyThrough(Tip::class, Address::class, 'id', 'address_id', 'address_id', 'id'); } public function getMemeTipsTotalAttribute() { return $this->tips->sum('amount_formatted'); } public function setImageAttribute($value) { $attribute_name = "image"; $disk = "uploads"; $destination_path = "uploads/memes"; $image = \Image::make($value)->encode($value->extension(), 90); $fix_rotation_issues = $image->orientate(); $filename = md5($value.time()) . '.' . $value->extension(); if ($value->extension() == 'gif') { // Work around to get GIFs to work copy($value->getRealPath(), $destination_path.'/'.$filename); $image->destroy(); } else { \Storage::disk($disk)->put($destination_path.'/'.$filename, $image->stream()); } $this->attributes[$attribute_name] = $destination_path.'/'.$filename; } }