【thinkphp3.2 关联模型】 Undefined class constant 'self::HAS_MANY' thinkphp

谦逊的蜗牛 2014-03-02 11:40:20
网上竟然没有出现过这样的问题,不知道从何下手了
CREATE TABLE `psxt_team` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`logo` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`project_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`introduce` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`cre_time` date DEFAULT NULL,
`state` int(1) DEFAULT NULL,
`remark` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `psxt_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`pwd` char(32) COLLATE utf8_unicode_ci DEFAULT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`sex` int(1) DEFAULT NULL,
`photo_url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`tel` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL,
`qq` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL,
`state` tinyint(2) DEFAULT '2',
`role` tinyint(2) unsigned DEFAULT NULL,
`res_time` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

DROP TABLE IF EXISTS `psxt_team_user`;
CREATE TABLE `psxt_team_user` (
`team_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`role` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`remark` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


接着是定义的Model:TeamModel.class.php

namespace Home\Model;

use Think\Model\RelationModel;

class TeamModel extends RelationModel {

protected $_link = array(
'User' => self::MANY_TO_MANY,
);
}


操作:

$user = D('Team');
$value = $user->select();

还没有关联的时候竟出错了:Undefined class constant 'self::MANY_TO_MANY'
...全文
2800 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2014-03-02
  • 打赏
  • 举报
回复
define('MANY_TO_MANY',4); 定义的是全局常量 你使用时应这样:'User' => MANY_TO_MANY,
谦逊的蜗牛 2014-03-02
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
明明是 Undefined class constant 'self::MANY_TO_MANY' 却硬说已经定义了,无语
我知道它提示这个属性未定义,但是这个属性并不需要自己定义,在RelationModel中这样定义了
define('HAS_ONE',1);
define('BELONGS_TO',2);
define('HAS_MANY',3);
define('MANY_TO_MANY',4);
而我在TeamModal中已经继承了这个类,那么同时也应该有了‘MANY_TO_MANY’属性,所以现在的问题貌似是为什么没有找到这个父类中的属性。
xuzuning 2014-03-02
  • 打赏
  • 举报
回复
明明是 Undefined class constant 'self::MANY_TO_MANY' 却硬说已经定义了,无语
谦逊的蜗牛 2014-03-02
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
'User' => self::MANY_TO_MANY, 既然你的类中没有定义 MANY_TO_MANY 属性 那么你怎么取值呢?
我在User类中继承了RelationModel类,在这个类里面有MANY_TO_MANY 属性。
xuzuning 2014-03-02
  • 打赏
  • 举报
回复
'User' => self::MANY_TO_MANY, 既然你的类中没有定义 MANY_TO_MANY 属性 那么你怎么取值呢?
谦逊的蜗牛 2014-03-02
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
你的 MANY_TO_MANY 在哪里定义的?
没有定义MANY_TO_MANY,只是调用了这个框架中的模型,这个关联模型还需要自己定义吗?不明白呀
xuzuning 2014-03-02
  • 打赏
  • 举报
回复
你的 MANY_TO_MANY 在哪里定义的?
相关推荐
发帖
Framework

4249

社区成员

国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
帖子事件
创建了帖子
2014-03-02 11:40
社区公告
暂无公告