thinkphp关联模型 condition关联条件怎么用,能说个例子吗

 我来答
木同生活
2015-08-15 · 技术宅,对待技术十分认真。
木同生活
采纳数:172 获赞数:568

向TA提问 私信TA
展开全部
通常所说的关联关系包括下面三种:
一对一关联 :ONE_TO_ONE,包括HAS_ONE和BELONGS_TO
一对多关联 :ONE_TO_MANY,包括HAS_MANY和BELONGS_TO
多对多关联 :MANY_TO_MANY
关联关系必然有一个参照表,例如:
有一个员工档案管理系统项目,这个项目要包括下面的一些数据表:基本信息表、员工档案表、部门表、项目组表、银行卡表(用来记录员工的银行卡资料)。
这些数据表之间存在一定的关联关系,以员工基本信息表为参照来分析和其他表之间的关联:每个员工必然有对应的员工档案资料,所以属于HAS_ONE关联;
每个员工必须属于某个部门,所以属于BELONGS_TO关联;
每个员工可以有多个银行卡,但是每张银行卡只可能属于一个员工,因此属于HAS_MANY关联;
每个员工可以同时在多个项目组,每个项目组同时有多个员工,因此属于MANY_TO_MANY关联;
分析清楚数据表之前的关联关系后,才可以进行关联定义和关联操作。
如:
protected $_link = array(

'关联1' => array(

'关联属性1' => '定义',

'关联属性N' => '定义',

),

'关联2' => array(

'关联属性1' => '定义',

'关联属性N' => '定义',

),

'关联3' => HAS_ONE, // 快捷定义

...

);

'Dept'=> array(

'mapping_type'=>BELONGS_TO,

'class_name'=>'Dept',

'foreign_key'=>'userId',

'mapping_name'=>'dept',

// 定义更多的关联属性

……

),
品牌铸造
2015-08-05 · TA获得超过2098个赞
知道小有建树答主
回答量:632
采纳率:71%
帮助的人:100万
展开全部
condition是标签条件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在深情悲欢两头
2015-08-26 · TA获得超过1656个赞
知道小有建树答主
回答量:3122
采纳率:0%
帮助的人:669万
展开全部
这个好难,讲的太模糊了, 我也在学tp
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
俅俅火了
2014-09-22 · TA获得超过273个赞
知道小有建树答主
回答量:96
采纳率:0%
帮助的人:63.6万
展开全部
namespace Home\Model;
use Think\Model\RelationModel;
class UserModel extends RelationModel{
protected $_link = array(
'Profile'=> self::HAS_ONE,
);
}

==========
$User = D("User");
$user = $User->relation(true)->find(1);

输出

array(
'id' => 1,
'account' => 'ThinkPHP',
'password' => '123456',
'Profile' => array(
'email' => 'liu21st@gmail.com',
'nickname' => '流年',
),
)

简单意思就是自动关联查询两张表

下载手册看下,里面介绍很完善
追问
不是有个condition属性的关联条件吗?这个怎么用
追答
关联查询的时候会自动带上外键的值,如果有额外的查询条件,可以通过定义关联的condition属性。 上面的例子一般只要外键就足够唯一了

比如有个user表和book 表,一个user有100本book,但是我只想要year = 2004 的book
....
'condition' =>'year = 2004',
...

就是在关联基础上再加上限制达到更精确查询目的
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式