hasMany(Invoice::class, 'user_id'); } public function staff() { return $this->hasOne(Staff::class, 'user_id'); } public function downlines() { return $this->hasMany(self::class, 'parent_id', 'id'); } public function getFullNameAttribte() { return "{$this->first_name} {$this->last_name}"; } public function getPublishedVideos($start_date = null, $end_date = null) { $videos = StudioPlusVideo::with('asinData')->whereHas('channel.user', function($query) { $query->where('id', $this->id); }) ->when($start_date && $end_date, function($query) use($start_date, $end_date) { $query->whereHas('tracks', function($query) use($start_date, $end_date) { $query->where('name', StudioPlusVideo::STATUS_PUBLISHED)->whereBetween('created_at', [$start_date, $end_date]); }); }) ->where('status', StudioPlusVideo::STATUS_PUBLISHED) ->get(); return $videos; } }