会员表members(member_id,password,name,email,...),会员详细信息表member_object('member_id','sex',msn,qq,...),
1)在会员注册时,需要在两个表中插入对应数据成功,注册才成功。 2)需要批量导入会员数据到members表和member_object表
配置 var $has_many = array('member_object'=>'member_object:append:member_id^member_id');方法二 先把数据插入到members表,在得到member_id后再把数据插入到member_object
在dbeav中的delete会在删除主表的时候把关联子表的数据删除。如果在删除主表的数据后并不需要把关联的子表的数据删除, 那么则不能将两个表进行关联,这个时候则在代码中实现插入两遍即可。方法三 自己写sql,实现多表插入
在能够使用dbeav进行表关联的时候推荐使用方法一,不能则推荐使用方法二 对于数据一致性要求严格的可以使用事务处理
在ECOS中没有提供方法进行批量的多表插入数据,dbeav中的save方法是单条数据进行插入,那么在进行批量的时候则 使用循环save方法,
员表members(member_id,password,name,email,enable,...),会员详细信息表member_object('member_id','sex',msn,qq,...),
1)在会员修改信息时,需要在两个表中对应的数据信息更新。 2) 将会员中所有sex<18的会员的members表中enable字段改为enable=false禁用
配置 var $has_many = array('member_object'=>'member_object:contrast:member_id^member_id');
那么对于有这样需求的则写sql来进行实现
商品表goods(goods_id,goods_type_id,name,marketable,...)商品类型表goods_type(goods_type_id,type_name,...)
1)根据查询条件goods_id=1,查询到对应商品的类型的名字type_name 2)根据查询条件marketable=true(上架)并且商品类型是type_name=`笔记本`,查询到对应的商品
配置 var $has_many = array('goods_type'=>'goods_type:append:goods_type_id^goods_type_id'); var $subSdf = array('default'=>array('*')); 使用dump查询: $this->app->model('goods')->dump('array(goods_id'=>1'),'*','default');
dump的使用限制: 1) 条件的限制,对于dump来说条件能设置的条件只能针对与主表,dump会先根据条件在主表中查找出一条符合 条件的数据,再将这条数据中的关联字段的数据作为关联子表的查询条件,在子表中进行查询,最后返回数据 2) 返回数据条数的限制,主表根据条件只能返回一条数据,关联子表没有限制根据dump的使用限制可以看出,对于第二个问题则不能使用dbeav中的dump进行查询,那么这个就只能自己写sql来进行实现
会员表members(member_id,password,name,email,enable,...),会员详细信息表member_object('member_id','sex',msn,qq,...),
1)根据member_id删除一个用户 2)把满足members表中enable=true并且member_object表中sex<18的会员信息删除
在dbeav中的delete会在删除主表的时候把关联子表的数据删除。
delete条件限制 1)把delete的条件作为主表的条件进行删除,再把关联字段的数据作为子表的删除条件 2)子表数据不能作为主表删除的条件通过限制条件我们知道,对于第二个问题则不能用delete来进行删除,那么这个时候则需要自己写sql来进行删除