Затем (чтобы путаницы не было, файлов моделей сущностей домена итак достаточно) переношу файл модели процесса в
models\processes. При ображении к модели, определённой внутри него система кидает Исключение, в случае, если модель ссылается
на другую таблицу (relation), которая в папке на уровень выше.
Ошибка:
Class 'app\models\processes\Item' not found
сама модель процесса ссылается на другую модель, которая на уровень выше в namespace, и, соответственно никаких use'-ов не сгенерировано.
Чем лечится:
надо добавить вначале модели, помещённой в нестандартный отдельный каталог use, указывающий на namespace модели, с которой связана объявляемая модель
Код: Выделить всё
use app\models\Item;
..в rules() не вызывала у системы изумления откуда брать класс Item в app\models\processes\public function rules()
{
return [
[['object_id', 'creator_id'], 'integer'],
[['process_data'], 'string'],
[['start_dt'], 'required'],
[['start_dt', 'modified_dt', 'stop_dt'], 'safe'],
[['state', 'stage'], 'string', 'max' => 50],
[['object_id'], 'exist', 'skipOnError' => true, 'targetClass' => Item::className(), 'targetAttribute' => ['object_id' => 'id']],
];
}
скрин решения с выделенной проблемной часть прилагаю.
в дереве файлов Sublime можно увидеть их организацию в проекте.
Суть предложения:
чтобы relations у модели генерились в Gii либо с возможностью установки custom namespaces для related tables, либо автоматом
полностью прописывались пути прямо с названиями всех моделей, т.е. чтобы выделенный фрагмент выглядел так
..либо чтобы в начале файла добавлялись бы разыменовывающие ссылки (если я правильно выражаюсь) на нужные названия моделей в их родном namespace, как это видно на скринеpublic function rules()
{
return [
[['object_id', 'creator_id'], 'integer'],
[['process_data'], 'string'],
[['start_dt'], 'required'],
[['start_dt', 'modified_dt', 'stop_dt'], 'safe'],
[['state', 'stage'], 'string', 'max' => 50],
[['object_id'], 'exist', 'skipOnError' => true, 'targetClass' => \app\models\Item::className(), 'targetAttribute' => ['object_id' => 'id']],
];
}
PS пока писал - обнаружился баг в хайлайтере, как видите, второй раз [ quote ] уже отступы игнорирует