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

И я не думаю, что внешние ключи имеют какое-либо отношение к вашей проблеме.

Другие вопросы по тегам