看了thinkphp的完全开发手册上的关联模型,其实我看的不太懂,做起来的时候,就有好多错误,比如说xxx表不存在,没有relation方法等等。后来查了好多资料,发现都是代码前头一些命名空间漏了写,或者是表名没写对(所以表名要写好,不然是给自己挖坑。。。)又或者模型的名字没写对。
下面给大家写一下完整的代码,我测试出来是没有问题的哦。仅供参考
这里需要用到三张表(因为是多对多关系,所以还需要一个中间表),比如我有文章表easay,属性表attr,属性就是说这篇文章可以是“置顶”属性,“推荐”属性等等,他们之间是多对多的关系。中间表的属性就是他们两个表的主键id,在这里取名为easay_attr
关联模型名称
EasayModel.class.php
namespace Home\model;
use Think\Model;
use Think\Model\RelationModel;
Class EasayModel extends RelationModel{protected $_link=array('attr'=>array('mapping_type'=>self::MANY_TO_MANY,'relation_type'=>easay_attr,'foreign_key'=>'id','relaton_foreign_key'=>'attr_id',
)
);
}
?>
模型写到这里,就写完了,下面是控制器方法
namespace Home\Controller;
use Think\Controller;
class indexController extends Controller{Public function index(){$model=D('Easay')->relation(true)->select();var_dump($model);}
}
?>
番外
D方法虽说和M方法虽然都能对数据库进行操作,但是D方法除此之外还有很多用处,比如可以查到同表名的model类,自动验证,自动填充,关联查询。。。
而如果只用到一般的增删改查,就用M方法就可以了。