关联模型中一个非常奇怪的问题

浏览:645 发布日期:2016/10/10 分类:求助交流 关键字: 关联模型,content
我用user【用户】表关联content【评论】表,他们是一对多关系。
控制器代码:<?php
namespace Home\Controller;
use Think\Controller;
class UserController extends Controller {
    public function index(){
        //展示一对多关系
        $user=D("user");        
        $arr=$user->field("id,username")->relation(true)->select();
        dump($arr);
        print_r($arr);
    }
}
模型代码:<?php
namespace Home\Model;
use Think\Model;
use Think\Model\RelationModel;
class UserModel extends RelationModel{
    //展示一对多关系
    Protected $_link=array(
        "content"=>array(
            "mapping_type"=>self::HAS_MANY,
            "foreign_key"=>"uid",//关联表的ID
            //"mapping_fields"=>"code",//只查询一个字段
            //"as_fields"=>"code:mycode"//为防止与本表冲突,as一个字段名
        ),
    );    
}
content表


运行后出错:
:(
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'uid' in 'where clause'
错误位置
FILE: F:\website\thinkphp\ThinkPHP\Library\Think\Db\Driver.class.php  LINE: 156
TRACE
#0 F:\website\thinkphp\ThinkPHP\Library\Think\Db\Driver.class.php(156): PDO->prepare('SELECT * FROM `...')
#1 F:\website\thinkphp\ThinkPHP\Library\Think\Db\Driver.class.php(946): Think\Db\Driver->query('SELECT * FROM `...', false)
#2 F:\website\thinkphp\ThinkPHP\Library\Think\Model.class.php(579): Think\Db\Driver->select(Array)
#3 F:\website\thinkphp\ThinkPHP\Library\Think\Model\RelationModel.class.php(174): Think\Model->select()
#4 F:\website\thinkphp\ThinkPHP\Library\Think\Model\RelationModel.class.php(113): Think\Model\RelationModel->getRelation(Array, true)
#5 F:\website\thinkphp\ThinkPHP\Library\Think\Model\RelationModel.class.php(68): Think\Model\RelationModel->getRelations(Array, true)
#6 F:\website\thinkphp\ThinkPHP\Library\Think\Model.class.php(589): Think\Model\RelationModel->_after_select(Array, Array)
#7 F:\website\thinkphp\Demo\Home\Controller\UserController.class.php(15): Think\Model->select()
#8 [internal function]: Home\Controller\UserController->index()
#9 F:\website\thinkphp\ThinkPHP\Library\Think\App.class.php(173): ReflectionMethod->invoke(object(Home\Controller\UserController))
#10 F:\website\thinkphp\ThinkPHP\Library\Think\App.class.php(110): Think\App::invokeAction(object(Home\Controller\UserController), 'index')
#11 F:\website\thinkphp\ThinkPHP\Library\Think\App.class.php(204): Think\App::exec()
#12 F:\website\thinkphp\ThinkPHP\Library\Think\Think.class.php(120): Think\App::run()
#13 F:\website\thinkphp\ThinkPHP\ThinkPHP.php(97): Think\Think::start()
#14 F:\website\thinkphp\Demo\index.php(3): include('F:\website\thin...')
#15 {main}
ThinkPHP3.2.3 { Fast & Simple OOP PHP framework } -- [ WE CAN DO IT JUST THINK ]

表里明显是有uid这个字段。
如果我把模型里的content改成abc然后把表名也改成abc就可以了,只要是content就出错,不管有没有这个表,还是这个表里有没有uid字段都提示出错

难道content是关联模型里系统用的吗?
最佳答案
评论() 相关
后面还有条评论,点击查看>>