thinkphp关联模型为什么老是relation方法不存在,我继承的也是RelationModel()啊 10
我在模型里写的是:namespaceHome\Model;useThink\ModeluseThink\Model\RelationModel;classUserMode...
我在模型里写的是:
namespace Home\Model;
use Think\Model
use Think\Model\RelationModel;
class UserModel extends RelationModel {
protected $trueTableName = 'person_user';
protected $_link=array(
'Cimage'=>array(
'mapping_type'=>self::HAS_MANY,
'foreign_key'=>'company_id',
'mapping_fields'=>'img_url'
)
)
我在控制器里写的是
namespace Home\Controller;
use Think\Controller;
use Home\Model\UserModel;
use Think\Model\RelationModel;
class UserController extends Controller {
public function index(){
$cuser=D('Cuser');
var_dump($cuser->relation('Cimage')->select());
}
}
; 展开
namespace Home\Model;
use Think\Model
use Think\Model\RelationModel;
class UserModel extends RelationModel {
protected $trueTableName = 'person_user';
protected $_link=array(
'Cimage'=>array(
'mapping_type'=>self::HAS_MANY,
'foreign_key'=>'company_id',
'mapping_fields'=>'img_url'
)
)
我在控制器里写的是
namespace Home\Controller;
use Think\Controller;
use Home\Model\UserModel;
use Think\Model\RelationModel;
class UserController extends Controller {
public function index(){
$cuser=D('Cuser');
var_dump($cuser->relation('Cimage')->select());
}
}
; 展开
3个回答
展开全部
把你的类UserModel改成CuserModel就行了,你这样他找不到Cuser这个模型的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ThinkPHP关联模型RelationModel的relation()方法的参数获取是这样定义的:
1、当传入参数为true时,引入所有的关联,这个一点儿问题都没有;
2、当传入的参数为一个字符串时,这时表示relation()方法接受了一个局部关联的名称,对于这个局部关联表的名称ThinkPHP是这样判断的:
首先检查关联表中的’mapping_name’属性,如果存在的话就将传入的参数与’mapping_name’进行比较确定要关联的关联表,如果找不到的话就放弃这个关联了。
其次是如果关联表中没有定义‘mapping_name’属性,则查找$_link中的键名,找到相同的进行关联,找不到就放弃关联。
所以犯的错误就是定义了’mapping_name’属性值为‘usermail’,然后调用relation(‘Users’)这个方法,当然就找不到相关联的表了,所以也就无法进行关联。
解决办法就是删除’mapping_name’属性或则将relation()方法参数改为relation(‘usermail’),OK!这样问题就得到了解决。
1、当传入参数为true时,引入所有的关联,这个一点儿问题都没有;
2、当传入的参数为一个字符串时,这时表示relation()方法接受了一个局部关联的名称,对于这个局部关联表的名称ThinkPHP是这样判断的:
首先检查关联表中的’mapping_name’属性,如果存在的话就将传入的参数与’mapping_name’进行比较确定要关联的关联表,如果找不到的话就放弃这个关联了。
其次是如果关联表中没有定义‘mapping_name’属性,则查找$_link中的键名,找到相同的进行关联,找不到就放弃关联。
所以犯的错误就是定义了’mapping_name’属性值为‘usermail’,然后调用relation(‘Users’)这个方法,当然就找不到相关联的表了,所以也就无法进行关联。
解决办法就是删除’mapping_name’属性或则将relation()方法参数改为relation(‘usermail’),OK!这样问题就得到了解决。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$cuser=D('Cuser'); 为什么是Cuser?
追问
Cuser是表名啊
追答
这里应该是模型名吧 应该是D('user') 因为你的模型不叫Cuser啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询