数据表

id      cat_name      cat_pid

76     手机、数码     0

84     手机配件        76

86     蓝牙耳机        84

从属关系 : 蓝牙耳机  =>(上一级)  手机配件   =>(上一级)  手机、数码(顶级了)

关联模型

namespace Admin\Model;
use Think\Model\RelationModel;
class CategoryModel extends RelationModel
{
protected $_link = array(
          'Category' => array(     //表名
              'mapping_type'=>self::BELONGS_TO, //关键.这个是查询父级的 而HAS_MANY则是查询子级的
              'mapping_name'=>'_parent', //自定义
              'mapping_order'=>'cat_sort',
              'parent_key'=>'cat_pid',//关键.父级关联的字段名 
          ),
);
}

控制器中的代码:
public function search()
{
$category = D('Category'); //要用D方法.才能使用关联模型
  $id = 86;   //这时候86这个id是数据表中最底层的一级.
  $this->id = $category->where('id='.$id)->order('cat_sort')->relation(true)->select(); //这时候查询出来的是86的上一级.即id=84,手机配件
  $lastPid = $category->relationGet(true); //如果希望在完成的查询基础上,在进行关联查询.则使用relationGet()方法
  //dump($lastPid);
  //这时候的$lastPid就是最顶层的数据(id=76,手机,数码).(前提是数据表为三层结构.如果是两层结构,则$this->id就已经到顶层了,就不需要在使用relationGET()方法)
//假如再来一次,就能查询到更高的父级,前提是数据表为四层结构,以此类推
  //$lastLastPid = $category->relationGet(true);
}

ThinkPHP 关联模型中查询某条记录的父级(非查询子级)的更多相关文章

  1. mysql结构相同的三张表查询一条记录\将一张表中的数据插入另外一张表

    将一张表中的数据插入另外一张表 1.两张表结构相同 insert into 表1名称 select * from 表2名称 2.两张结构不相同的表 insert into 表1名称(列名1,列名2,列 ...

  2. 160804、oracle查询:取出每组中的第一条记录

    oracle查询:取出每组中的第一条记录按type字段分组,code排序,取出每组中的第一条记录 方法一: select type,min(code) from group_info group by ...

  3. 【面经】面试官:如何以最高的效率从MySQL中随机查询一条记录?

    写在前面 MySQL数据库在互联网行业使用的比较多,有些小伙伴可能会认为MySQL数据库比较小,存储不了很多的数据.其实,这些小伙伴是真的不了解MySQL.MySQL的小不是说使用MySQL存储的数据 ...

  4. Laravel关联模型中has和with区别

    本篇文章给大家带来的内容是关于Laravel关联模型中has和with区别(详细介绍),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 首先看代码: 1 2 3 4 5 6 $user ...

  5. ThinkPHP关联模型详解

    在ThinkPHP中,关联模型更类似一种mysql中的外键约束,但是外键约束更加安全,缺点却是在写sql语句的时候不方便,ThinkPHP很好得解决了这个问题.但是很多人不动关联模型的意思.现在就写个 ...

  6. mysql 查询一条记录的下一条和上一条记录

    如果ID是主键或者有索引,可以直接查找: 方法一: 查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误): select * from tab ...

  7. ThinkPHP 关联模型(二十)

    原文:ThinkPHP 关联模型(二十) ThinkPHP关联模型 两表关联查询:Message 和  user  关联条件uid(参考手册:模型->关联模型) 步骤: 一:创建Message表 ...

  8. ThinkPHP关联模型如何关联非主键

    ThinkPHP关联模型默认是主键外键关联 官方并没有提供相关文档 如何实现非主键与非主键间之间的关联 <?php namespace Admin\Model; use Think\Model\ ...

  9. php实现只保留mysql中最新1000条记录

    这篇文章主要介绍了php实现只保留mysql中最新1000条记录的方法和相关示例及数据库结构,十分的全面,有需要的小伙伴可以参考下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...

随机推荐

  1. php 条件查询和多条件查询

    条件循环 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  2. Java Hour 24 JDBC

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 虽然现在都不会直接写JDBC 了,但是了解毕竟是需要的.当然这个和ADO.Ne ...

  3. c# 作业2

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. sql经典习题及其答案(纠正错误版)

    --网上有好多这套题的答案,但是经过我的验证,有很多都是错的,误人子弟--这是我自己纠正以后的版本 然后呢如果我写的还有不对的欢迎批评指正!--(1)查询2006年以后(包括2006年)的投稿情况,列 ...

  5. TextView属性大全

    今天研究了TextView一天了,发现网上有一篇讲TextView属性的,非常全,收藏一下先. 发现TextView有一个比较大的问题,就是文字排版的问题,遇到数字,字母,符号等就会有问题,目前还没有 ...

  6. 解析Cloudera Manager内部结构、功能包括配置文件、目录位置等

    转载自 http://www.aboutyun.com/thread-9189-1-1.html 问题导读1.CM的安装目录在什么位置? 2.hadoop配置文件在什么位置? 3.Cloudera m ...

  7. java中异步多线程超时导致的服务异常

    在项目中为了提高大并发量时的性能稳定性,经常会使用到线程池来做多线程异步操作,多线程有2种,一种是实现runnable接口,这种没有返回值,一种是实现Callable接口,这种有返回值. 当其中一个线 ...

  8. http://blog.sina.com.cn/s/blog_5f103c9c0101atny.html

    http://blog.sina.com.cn/s/blog_5f103c9c0101atny.html http://www.oschina.net/question/117304_51525

  9. HDU3138 Coconuts(最小割)

    题目大概说有n个人每个人各有一个信仰0或1,他们中有m对朋友关系,现在要对一件事投票,可以为了和信仰不同的朋友一样而违背自己的信仰和朋友投一样的票,问违背信仰的人数加上和朋友投票结果不同的人数总和的最 ...

  10. POJ 1734 Sightseeing trip(无向图最小环+输出路径)

    题目链接 #include <cstdio> #include <string> #include <cstring> #include <queue> ...