Files
portal-api/app/Repositories/Module/VirtualMachine/VirtualMachineRepository.php
T
2026-02-05 21:57:57 +07:00

63 lines
1.5 KiB
PHP

<?php
namespace App\Repositories\Module\VirtualMachine;
use App\Models\VirtualMachines;
use App\Repositories\BaseRepository;
class VirtualMachineRepository extends BaseRepository implements VirtualMachineRepositoryInterface
{
public function getModel()
{
return VirtualMachines::class;
}
public function filter(
array $data = [],
array $relationships = [],
array $withCount = [],
array $select = ['*'],
bool $returnQuery = false
) {
$query = $this->model
->select($select)
->with($relationships);
if (!empty($data['datacenter_id'])) {
$query->where('datacenter_id', $data['datacenter_id']);
}
if (!empty($data['host_id'])) {
$query->where('host_id', $data['host_id']);
}
if (!empty($data['name'])) {
$query->where('name', 'like', '%' . $data['name'] . '%');
}
if (!empty($withCount)) {
$query->withCount($withCount);
}
if ($returnQuery) {
return $query;
}
if (!empty($data['paginate']) || !empty($data['page'])) {
return $query->paginate(
$data['per_page'] ?? 15
);
}
return $query->get();
}
public function findBy(string $key = '', string|int|null $value = '')
{
if (empty($key) || empty($value)) {
return false;
}
return $this->model->where($key, $value)->first();
}
}