yii2 gii CRUD Generator error - Класс "Сообщение" не существует или имеет синтаксическую ошибку
Я создаю базовую текстовую систему личных сообщений для веб-сайта с использованием yii2 advanced.
Я использую модель gii и генераторы CRUD, но столкнулся с проблемой генерации CRUD после создания класса модели. Мне интересно, может ли это быть проблема с внешними ключами в таблице сообщений, которые имеют отношение один ко многим с таблицей пользователей (то есть один пользователь может иметь много сообщений).
Когда я пытаюсь запустить генератор CRUD с - Model Class- классом поиска сообщений Message Class - frontend\models\search\MessageSearch Controller Class - frontend\controllers\MessageController
Я получаю следующую ошибку-
Класс "Сообщение" не существует или имеет синтаксическую ошибку.
Класс Message определенно существует, и синтаксис правильный в соответствии с моей IDE.
Есть идеи, что может быть причиной ошибки?
Сгенерированный класс сообщения выглядит следующим образом:
<?php
namespace frontend\models;
use Yii;
/**
* This is the model class for table "message".
*
* @property integer $id
* @property string $title
* @property string $message
* @property integer $from_id
* @property integer $to_id
* @property integer $from_viewed
* @property integer $to_viewed
* @property integer $from_deleted
* @property integer $to_deleted
* @property string $from_vdate
* @property string $to_vdate
* @property string $from_ddate
* @property string $to_ddate
* @property string $created
*
* @property User $to
* @property User $from
*/
class Message extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'message';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['message', 'from_id', 'to_id', 'created'], 'required'],
[['message'], 'string'],
[['from_id', 'to_id', 'from_viewed', 'to_viewed', 'from_deleted', 'to_deleted'], 'integer'],
[['from_vdate', 'to_vdate', 'from_ddate', 'to_ddate', 'created'], 'safe'],
[['title'], 'string', 'max' => 255]
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'title' => 'Title',
'message' => 'Message',
'from_id' => 'From ID',
'to_id' => 'To ID',
'from_viewed' => 'From Viewed',
'to_viewed' => 'To Viewed',
'from_deleted' => 'From Deleted',
'to_deleted' => 'To Deleted',
'from_vdate' => 'From Vdate',
'to_vdate' => 'To Vdate',
'from_ddate' => 'From Ddate',
'to_ddate' => 'To Ddate',
'created' => 'Created',
];
}
/**
* @return \yii\db\ActiveQuery
*/
public function getTo()
{
return $this->hasOne(User::className(), ['id' => 'to_id']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getFrom()
{
return $this->hasOne(User::className(), ['id' => 'from_id']);
}
}
Таблица sql - это
--
- Структура стола для стола message
СОЗДАЙТЕ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ message
(id
int (11) NOT NULL AUTO_INCREMENT, title
varchar (255) DEFAULT NULL, message
текст НЕ НУЛЬ, from_id
int (11) NOT NULL, to_id
int (11) NOT NULL, from_viewed
tinyint (1) NOT NULL ПО УМОЛЧАНИЮ '0', to_viewed
tinyint (1) NOT NULL ПО УМОЛЧАНИЮ '0', from_deleted
tinyint (1) NOT NULL ПО УМОЛЧАНИЮ '0', to_deleted
tinyint (1) NOT NULL ПО УМОЛЧАНИЮ '0', from_vdate
datetime DEFAULT NULL, to_vdate
datetime DEFAULT NULL, from_ddate
datetime DEFAULT NULL, to_ddate
datetime DEFAULT NULL, created
datetime НЕ NULL, ПЕРВИЧНЫЙ КЛЮЧ (id
), КЛЮЧ from_id
(from_id
), КЛЮЧ to_id
(to_id
)) ENGINE = InnoDB CHARSET ПО УМОЛЧАНИЮ = latin1 AUTO_INCREMENT = 7;
-
- Ограничения для таблицы message
ALTER TABLE message
ДОБАВИТЬ ОГРАНИЧЕНИЕ message_ibfk_2
ИНОСТРАННЫЙ КЛЮЧ (to_id
) РЕКОМЕНДАЦИИ user
(id
), ДОБАВИТЬ ОГРАНИЧЕНИЕ message_ibfk_1
ИНОСТРАННЫЙ КЛЮЧ (from_id
) РЕКОМЕНДАЦИИ user
(id
);
2 ответа
В том сообщении, которое вы получаете, синтаксическая ошибка относится к ошибке в определении класса, которое вы предоставляете для gii. Таким образом, gii не может найти вашу модель, используя Message
как определение.
Так должно быть frontend\models\Message
,
Взгляните на эту ссылку. Пространство имен вашей модели может быть злодеем.
Попробуйте изменить пространство имен вашей модели на
use app/models/Message
И я не думаю, что внешние ключи имеют какое-либо отношение к вашей проблеме.