经过昨晚的考虑,对
ThinkPHP的关联查询进行了调整,主要是修改之前Dao类的关联查询方法,增加了Volist关联查询的支持,并取消autoLink属性。
修改之后,xfind的参数和find方法保持不变,区别在于xfind方法会一起返回关联记录,而find方法默认不返回关联记录。
find方法最后增加了一个relation参数,用以控制是否进行关联查询。 xfind方法仅仅是find方法的一个引用。relation参数支持false(不进行关联查询)、true(进行所有关联查询)和array(只查询某个关联)。取消Dao类的autoLink属性,用find和xfind方法进行不同查询。
举例:
- $dao->find("id=2"); // 返回id为2的记录$dao->xfind("id=2"); // 返回id为2的记录,并同时返回其关联记录(如果有定义)
如果不是使用find方法进行查询,可以配合getRelation方法进行关联记录的查询。
例如:
- $user = $dao->getById($id);$user = $dao->getRelation($user);// 或者使用下面的方法$user = $dao->getById($id,'','*','',true);
同样,增加了xFindAll方法进行关联查询(返回Volist对象),而findAll方法默认不进行关联查询。
例如:
- $list = $dao->findAll("type=1"); //查询type为1的用户$list = $dao->xFindAll("type=1"); // 查询并返回关联记录