Я пытаюсь получить доступ к модели в приложении Laravel через имя класса, но получаю следующую ошибку:
Class 'Asset' not found
Хотя я уже импортировал эту модель. Вот мой код:
<?php
namespace App\Services;
use App\Models\Asset as Asset;
use App\Models\Benefit\BenefitGroup as BenefitGroup;
use App\Models\Benefit\EmployeeDependent as EmployeeDependent;
use App\Models\Country as Country;
use App\Models\Employee\Education as Education;
use App\Models\Employee\EducationType as EducationType;
use App\Models\Employee\Employee as Employee;
use App\Models\Employee\EmployeeVisa as EmployeeVisa;
use App\Models\Employee\VisaType as VisaType;
use App\Models\Note as Note;
use App\Models\PaidTimeOff\Policy as Policy;
use App\Models\PaidTimeOff\TimeOffType as TimeOffType;
use Illuminate\Database\Eloquent\Model;
class ACLService
{
public function getDefaultPermissions($roleType)
{
//Array to append all default permissions in single array without extra indexing
$permissions=[];
$models=['Asset', 'Employee', 'Education', 'EducationType', 'VisaType', 'EmployeeVisa', 'BenefitGroup', 'EmployeeDependent',
'Policy', 'TimeOffType','Country', 'Note'];
foreach ($models as $model) {
$permissions=$this->getModelPermissions($model, $roleType, $permissions);
}
}
public function getModelPermissions($model, $roleType, $currentPermissions)
{
$data=$model::getDefaultPermissionsForThisModel($roleType, $currentPermissions);
return $data;
}
}
Если я передам
App\Models\Asset
вместо
Asset
, тогда ошибка будет устранена, но я не хочу передавать данные в этом формате, потому что это увеличит объем работы, если мы когда-нибудь сможем изменить (в будущем) расположение модели в проекте.
Это неполный проект, и мы определенно изменим расположение моделей.
Я ищу более чистое решение.