yii2 gii CRUD 生成器错误 - Class 'Message' 不存在或有语法错误
yii2 gii CRUD Generator error - Class 'Message' does not exist or has syntax error
我正在使用 yii2 advanced 为网站创建一个基本的纯文本私人消息系统。
我正在使用 gii 模型和 CRUD 生成器,但在创建模型后遇到了 CRUD 生成问题 class。我想知道消息 table 上的外键是否有问题,它与用户 table 具有一对多关系(即一个用户可以有很多消息)。
当我尝试 运行 CRUD 生成器时 -
型号 Class- 留言
搜索模型 Class - frontend\models\search\MessageSearch
控制器 Class - frontend\controllers\MessageController
我收到以下 错误-
Class 'Message' does not exist or has syntax error.
消息 class 确实存在并且
语法是
根据我的 IDE.
更正
任何可能导致错误的想法?
生成的消息class如下-
<?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']);
}
}
tablesql是-
--
-- Table table message
的结构
创建 TABLE 如果不存在 message
(
id
int(11) NOT NULL AUTO_INCREMENT,
title
varchar(255) 默认为空,
message
文本不为空,
from_id
int(11) 不为空,
to_id
int(11) 不为空,
from_viewed
tinyint(1) NOT NULL DEFAULT '0',
to_viewed
tinyint(1) NOT NULL DEFAULT '0',
from_deleted
tinyint(1) NOT NULL DEFAULT '0',
to_deleted
tinyint(1) NOT NULL DEFAULT '0',
from_vdate
日期时间默认为空,
to_vdate
日期时间默认为空,
from_ddate
日期时间默认为空,
to_ddate
日期时间默认为空,
created
日期时间不为空,
主键(id
),
键 from_id
(from_id
),
键 to_id
(to_id
)
) ENGINE=InnoDB 默认字符集=latin1 AUTO_INCREMENT=7 ;
--
-- table message
的约束条件
改变TABLEmessage
添加约束 message_ibfk_2
外键 (to_id
) 引用 user
(id
),
添加约束 message_ibfk_1
外键 (from_id
) 引用 user
(id
);
看看这个 link。你的模型命名空间可能是罪魁祸首。
尝试将您的模型命名空间更改为
use app/models/Message
而且我认为外键与您的问题无关。
在您收到的消息中,语法错误指的是您为 gii 提供的 class 定义中的错误。所以 gii 无法使用 Message
作为定义找到您的模型。
应该是frontend\models\Message
.
我正在使用 yii2 advanced 为网站创建一个基本的纯文本私人消息系统。
我正在使用 gii 模型和 CRUD 生成器,但在创建模型后遇到了 CRUD 生成问题 class。我想知道消息 table 上的外键是否有问题,它与用户 table 具有一对多关系(即一个用户可以有很多消息)。
当我尝试 运行 CRUD 生成器时 - 型号 Class- 留言 搜索模型 Class - frontend\models\search\MessageSearch 控制器 Class - frontend\controllers\MessageController
我收到以下 错误-
Class 'Message' does not exist or has syntax error.
消息 class 确实存在并且 语法是 根据我的 IDE.
更正任何可能导致错误的想法?
生成的消息class如下-
<?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']);
}
}
tablesql是-
--
-- Table table message
的结构
创建 TABLE 如果不存在 message
(
id
int(11) NOT NULL AUTO_INCREMENT,
title
varchar(255) 默认为空,
message
文本不为空,
from_id
int(11) 不为空,
to_id
int(11) 不为空,
from_viewed
tinyint(1) NOT NULL DEFAULT '0',
to_viewed
tinyint(1) NOT NULL DEFAULT '0',
from_deleted
tinyint(1) NOT NULL DEFAULT '0',
to_deleted
tinyint(1) NOT NULL DEFAULT '0',
from_vdate
日期时间默认为空,
to_vdate
日期时间默认为空,
from_ddate
日期时间默认为空,
to_ddate
日期时间默认为空,
created
日期时间不为空,
主键(id
),
键 from_id
(from_id
),
键 to_id
(to_id
)
) ENGINE=InnoDB 默认字符集=latin1 AUTO_INCREMENT=7 ;
--
-- table message
的约束条件
改变TABLEmessage
添加约束 message_ibfk_2
外键 (to_id
) 引用 user
(id
),
添加约束 message_ibfk_1
外键 (from_id
) 引用 user
(id
);
看看这个 link。你的模型命名空间可能是罪魁祸首。
尝试将您的模型命名空间更改为
use app/models/Message
而且我认为外键与您的问题无关。
在您收到的消息中,语法错误指的是您为 gii 提供的 class 定义中的错误。所以 gii 无法使用 Message
作为定义找到您的模型。
应该是frontend\models\Message
.