php技术博客
让天下没有搞不定的bug~

小悟:ThinkPHP之关联模型最新感触

        临近下班,小涛收到上海琪哥sos求救,说关联模型怎么就不能关联呢?下面说一下解决办法及最新感触:

       首先,遇到问题不要慌张,应该感到高兴,正是技术提升的时候,所以遇到问题时要高兴。

       其次,要分析问题的基本原理,ThinkPHP对大家来说并不陌生,但是对里面细节的东西,得要查阅一下手册来探个究竟,本博客有一些关于ThinkPHP的一些知识。ThinkPHP的关联操作的大体思路是这样的: 一个主表,有个自增的member_id   一个从表,有个与主表进行关联的member_id,下面以代码实例进行讲解:

 

class BuilderModel extends RelationModel

{

        protected $trueTableName = ‘member_basic’;   //这里声明基本表(主表)

protected $fields = array(

‘member_id’,

‘name’,                             //这里是基本表的一些字段

‘_pk’=>’member_id’,  //这里基本表的主键member_id

‘_autoinc’=>true

);

public $_link = array(

detail‘=>array(

‘mapping_type’ => HAS_ONE,    //关联类型,一对一

‘mapping_name’ => ‘detail’,        //mapping_name的名字和调用时的名字保持一致,加粗部分

‘class_name’ => ‘MemberDetail’, //关联的从表

‘foreign_key’ => ‘member_id’,     //关联的主表的字段,注意:这里不是从表的主键

‘as_fields’ => ‘qq,email’  //要关联从表的某些字段

),

}

下面说一下怎么调用:

 

$Builder = D(‘Builder’);

$detail  = array(
     “qq”    => $_POST[‘qq’],               //接收从表的字段
     “email”    => $_POST[’email’]    //接收从表的字段

    );

$Builder->name  = $_POST[‘name’]   //接收主表的字段

$Builder->detail  = $detail;                 //把接收过来从表的值赋值给从表

$result = $Builder->relation(true)->add();   //执行添加

哈哈,经过好大一会才试验成功,这些操作中有几点需要注意:

1、主表的自增member_id (主键) 

2、从表的member_id(不是主键) 

3、mapping_name的名字和调用时的名字保持一致,加粗部分

4、调用的时候要注意,要进行相对应

做到这些,基本上就可以实现ThinkPHP的关联操作了,感谢琪哥,以前对关联模型也是模模糊糊,经过这次之后,咦,原来关联模型是这个样子的……

赞(0)
未经允许不得转载:PHP技术博客 » 小悟:ThinkPHP之关联模型最新感触

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    :mrgreen: 霸气 清新 文艺 擦

    米开小琪罗10年前 (2012-02-29)回复