手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2010年12月30日的文章

Yii activerecord 中 index的用法

很多时间,我们需要查询出来的结果按照指定的列进行索引,所以就会有了下面的代码

$lists = xxx::model('xx')->findAll(array('id'=>array(1,2,3,4,5)));//语句应该是不对的,表达我想in查询
然后
取出结果后
foreach($lists as $list){
   $ls[$list->id]=$list;
}
这样有没有简化写法呢?因为我这样之后,发现。。。in查询变成了多条查询。
但是是lazy loading Xxxxx.xxx(relation中的关联)

有的,Yii中有类似的写法,那就是ar中的index(上文我刚说了on)

'index': the name of the column whose values should be used as keys  of the array that stores related objects. 

于是直接

$lists = xxx::model('xx')->findAll(array('index'=>'id'));

就OK了

Tags: yii, framework, ar, index

Yii Relation记录

Yii的relation中遇到的问题,记录一下。。。

目前我有两个表,表不是我设计的。所以我才特别郁闷。

商品表:字段:p_id,member_id

商铺表:字段:shop_id,member_id

其中p_id,shop_id都是主键,member_id是索引

考虑过这个原因,是最初设计的时候,每一个普通用户都可以发布商品,所以商品表没有记录shop_id。

可能也会考虑过,每一个用户会有多个商铺吧,所以shop表的member_id也不是唯一索引。

然后,我用Yii在做表关联,事实上,在我们改动程序的时候,我们已经把普通用户能够发布商品这个功能去掉了,因此,事实上对我们来说member_id,其实肯定是于shop表中的member_id有对应关系。

于是我在ShopProduct的relations这样写

PHP代码
  1. /** 
  2.  * @return array relational rules. 
  3.  */  
  4. public function relations()  
  5. {  
  6.     // NOTE: you may need to adjust the relation name and the related  
  7.     // class name for the relations automatically generated below.  
  8.     return array(  
  9.            'member' => array(self::BELONGS_TO,'ShopMember','member_id','with'=>'extends','condition'=>"member.member_state = '1'"),  
  10.            'shop' => array(self::BELONGS_TO , 'ShopInfo' , 'member_id','on'=>'t.member_id = shop.member_id' ),  
  11.     );  
  12. }  

是的,看上去好象不错,指定了foreignKey为member_id,同时指定了关联条件,即shop.member_id=product.member_id,然而世事总是那样的难以预料。。。。

在Yii的代码中,关于relation的on是这样写的:

XML/HTML代码
  1. 'on': the ON clause. The condition specified here will be appended to the joining condition using the AND operator. This option has been available since version 1.0.2.  

所以,上述的代码在SQL中显示出来就是 select * from product left outer join shop on (product.member_id = shop.shop_id and product.member_id = shop.member_id)//这个代码是伪代码,只是为了说明问题。

问了Yii群和hightman,他们告诉我解决方法都是将foreignKey字段设为空或者False,然后再指定ON。

于是,问题解决。多谢 Fising 和 HightMan

 

 

Tags: yii, framework, relation

手机软件加入恶意发短信阵营?

真的是杂谈吧。
最近在微勃上看到啊兴一直在说,手机软件里被人植入恶意代码,会帮你订一些你不要订的信息,然后每月扣费之类的。SP现在赢利的手段已经到了这一步了?丧心病狂,能够形容这一些吗?

N多网上是这么说的:

XML/HTML代码
  1. 各位机友注意:  
  2.   
  3.   这两天大家热议的一批正常软件被恶意植入扣费代码的情况最新进展如下 :经过N多论坛多位版主的共同努力,终于筛选出了第一批有扣费代码植入的软件名单,马上公布给大家严防受害!  
  4.   
  5. 这些扣费软件会通过短信收发权限悄悄扣除用户的话费,同时还会向如UC浏览器这类按照激活计费的服务器发送激活数据赚取这些公司的推广费用。而其中直接的受害者就是咱们机友。  
  6.   
  7.   现在N多市场审核员们正在加班加点的对市场中已上架的应用进行全部重新审查,并对于新上传的应用提高审查标准,以确保机友们不被这些扣费软件坑害!  
  8.   
  9.     另一方面,N多网的管理员已经将版主们审查出来的带有扣费代码的软件样本提供给各大手机安全公司,全力推动和支持扣费软件查杀工具早日出世!     
  10.   
  11.   由于很多比较热门的软件和游戏都发现了被植入过扣费代码的版本,我们将检查出有过恶意扣费代码的软件和游戏名称发布在下面,这个列表会每天更新,帮助各位机友提高警惕,避免损失!  

其他的事情我不太清楚,我只知道,我在下载“十滴水”游戏的时候,时不时的会让我下载机锋的市场(所以我也很纳闷,到底只是一个notifition的提醒呢?还是已经帮我下载了?只是没装而已?)
流量啊?短信啊?手机上的事情还真难说清楚
再这样下去,智能手机又能多少人敢用?但我也不清楚这是不是那些安全公司搞出来的玩意,反正两者都可以赚钱,APK反编译又是特别的容易。