ServerGroupItem.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\App\Models;
  3. use ModulesGarden\ProxmoxAddon\Core\Models\ExtendedEloquentModel;
  4. /**
  5. * @property int $id
  6. * @property string $node
  7. * @property string $group_id
  8. * @method static ServerGroupItem ofGroupId($id)
  9. * @method static ServerGroupItem ofGroupIdsAndServerId($ids, $serverId)
  10. * @method ServerGroupItem ofNodeNotIn(array $nodes)
  11. * @method ServerGroupItem ofNode($node)
  12. */
  13. class ServerGroupItem extends ExtendedEloquentModel
  14. {
  15. /** @var string */
  16. protected $table = 'ServerGroupItem';
  17. protected $fillable = ['id','node','group_id'];
  18. public $timestamps = false;
  19. public function scopeOfGroupId($query, $id){
  20. return $query->where("group_id", $id);
  21. }
  22. /**
  23. * @param $query
  24. * @param $ids
  25. * @param $serverId
  26. * @return mixed
  27. */
  28. public function scopeOfGroupIdsAndServerId($query, $ids, $serverId){
  29. $sg = (new ServerGroup())->getTable();
  30. $sgi = (new ServerGroupItem())->getTable();
  31. $query->select("{$sgi}.*")
  32. ->leftJoin($sg,"{$sg}.id","=","{$sgi}.group_id")
  33. ->whereIn("{$sgi}.group_id", $ids)
  34. ->where("{$sg}.server_id", $serverId);
  35. return $query;
  36. }
  37. public function scopeOfNodeNotIn($query, array $nodes){
  38. $query->whereNotIn("node", $nodes);
  39. }
  40. public function scopeOfNode($query, $node){
  41. return $query->where("node", $node);
  42. }
  43. }