Organization.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Repositories\Models\Course;
  3. use App\Repositories\Enums\ModelStatusEnum;
  4. use App\Repositories\Models\Base\Resource;
  5. use App\Repositories\Models\Model;
  6. use App\Repositories\Models\User\User;
  7. use Prettus\Repository\Contracts\Transformable;
  8. use Prettus\Repository\Traits\TransformableTrait;
  9. /**
  10. * Class Organization.
  11. *
  12. * @package namespace App\Repositories\Models\Course;
  13. */
  14. class Organization extends Model implements Transformable
  15. {
  16. use TransformableTrait;
  17. protected $table = 'course_organizations';
  18. /**
  19. * The attributes that are mass assignable.
  20. *
  21. * @var array
  22. */
  23. protected $guarded = [];
  24. public function cover_resource()
  25. {
  26. return $this->belongsTo(Resource::class, 'cover', 'id')->select(['path', 'id', 'url']);
  27. }
  28. public function coordinator()
  29. {
  30. return $this->belongsTo(User::class)->select(['id', 'name', 'mobile', 'headimg', 'turename', 'userrate', 'personal_signature']);
  31. }
  32. public function user()
  33. {
  34. return $this->belongsTo(User::class)->select(['id', 'name', 'mobile', 'turename']);
  35. }
  36. public function courses()
  37. {
  38. return $this->belongsToMany(Course::class, 'course_organization_course')->withTimestamps();
  39. }
  40. public function students()
  41. {
  42. return $this->belongsToMany(User::class, 'course_organization_student')->withTimestamps();
  43. }
  44. public function setTagsAttribute($val)
  45. {
  46. $this->attributes['tags'] = '-' . arr2str($val, '-') . '-';
  47. }
  48. public function getTagsAttribute($val)
  49. {
  50. return str2arr(trim($val, '-'), '-');
  51. }
  52. public function student()
  53. {
  54. return $this->hasMany(OrganizationStudent::class);
  55. }
  56. public function getIsMemberStatusAttribute()
  57. {
  58. return OrganizationStudent::query()->where('organization_id', $this->attributes['id'])->where('user_id', login_user_id())->where('status', ModelStatusEnum::OK)->exists();
  59. }
  60. }