Submitted by gouki on 2010, December 30, 3:19 PM
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代码
-
-
-
- public function relations()
- {
-
-
- return array(
- 'member' => array(self::BELONGS_TO,'ShopMember','member_id','with'=>'extends','condition'=>"member.member_state = '1'"),
- 'shop' => array(self::BELONGS_TO , 'ShopInfo' , 'member_id','on'=>'t.member_id = shop.member_id' ),
- );
- }
是的,看上去好象不错,指定了foreignKey为member_id,同时指定了关联条件,即shop.member_id=product.member_id,然而世事总是那样的难以预料。。。。
在Yii的代码中,关于relation的on是这样写的:
XML/HTML代码
- '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
PHP | 评论:0
| 阅读:22140
Submitted by gouki on 2010, December 30, 12:55 PM
真的是杂谈吧。
最近在微勃上看到啊兴一直在说,手机软件里被人植入恶意代码,会帮你订一些你不要订的信息,然后每月扣费之类的。SP现在赢利的手段已经到了这一步了?丧心病狂,能够形容这一些吗?
N多网上是这么说的:
XML/HTML代码
- 各位机友注意:
-
- 这两天大家热议的一批正常软件被恶意植入扣费代码的情况最新进展如下 :经过N多论坛多位版主的共同努力,终于筛选出了第一批有扣费代码植入的软件名单,马上公布给大家严防受害!
-
- 这些扣费软件会通过短信收发权限悄悄扣除用户的话费,同时还会向如UC浏览器这类按照激活计费的服务器发送激活数据赚取这些公司的推广费用。而其中直接的受害者就是咱们机友。
-
- 现在N多市场审核员们正在加班加点的对市场中已上架的应用进行全部重新审查,并对于新上传的应用提高审查标准,以确保机友们不被这些扣费软件坑害!
-
- 另一方面,N多网的管理员已经将版主们审查出来的带有扣费代码的软件样本提供给各大手机安全公司,全力推动和支持扣费软件查杀工具早日出世!
-
- 由于很多比较热门的软件和游戏都发现了被植入过扣费代码的版本,我们将检查出有过恶意扣费代码的软件和游戏名称发布在下面,这个列表会每天更新,帮助各位机友提高警惕,避免损失!
其他的事情我不太清楚,我只知道,我在下载“十滴水”游戏的时候,时不时的会让我下载机锋的市场(所以我也很纳闷,到底只是一个notifition的提醒呢?还是已经帮我下载了?只是没装而已?)
流量啊?短信啊?手机上的事情还真难说清楚
再这样下去,智能手机又能多少人敢用?但我也不清楚这是不是那些安全公司搞出来的玩意,反正两者都可以赚钱,APK反编译又是特别的容易。
Misc | 评论:1
| 阅读:17506
Submitted by gouki on 2010, December 29, 9:35 AM
eclientscript是hightman开发的一个yii插件,用来对于script和css文件进行合并、压缩
当然在自己的项目中,我也为它加了不少的功能和组件,只是因为这是并非公用的东西,拿出来分享意义也不大。
比如,我定义了一个变量path,定义了几个全局的assetUrl,assetPath,然后可以指定目录生成压缩文件,把项目中关于商城、资讯、用户中心等的JS就可以彻底分开了(JS是无所谓,关键是CSS,因为它是认相对目录的)
好了,开始说我遇到的问题吧,目前我有一个JS,二级联动的JS,它是这样写的。
JavaScript代码
- (function($){
- $.fn.xxx = function(){}
- })(jQuery);
是的,它没有什么问题,而且也挺不错,这样的写法可以防止项目中的$被污染,而使用$只在这一个包里被使用,单独引用的时候,一点问题没有。然而问题就发生在它被合并到一个文件后,上面的代码就无法执行了。。。后来直接改成
XML/HTML代码
- $.fn.xxx = function(){}
好吧,我偷懒了,但,将就点吧,没时间扑在上面。。。招人啊招人啊。。。
本文纯属工作记录,谢谢
Tags: yii, clientscript, jquery
PHP | 评论:0
| 阅读:18973
Submitted by gouki on 2010, December 28, 4:35 PM
如果数据库中没有什么太过重要的数据,每隔一段时间还是清除一下binlog吧。这玩意,对于没重要数据的人来说,实在没有意义 。。。。
大多数用binlog的,往往都是在wordpress上。因为它默认是innodb(好象3.01安装的时候,默认是myisam了。。至少我装的某一个库就是myisam的,很意外)
怎么清除bin log呢?先进入数据库命令行
show master logs;
purge master logs to 'mysql-bin.000010';
一般情况看看到最后一个是啥就留到啥吧。。。
留着最近的,真要出啥事了,还能恢复一下。。(不过,有多少人在自己的机器上恢复数据的?公司的除外。。。。)
Tags: innodb, mysql, binlog
Baby | 评论:0
| 阅读:19187
Submitted by gouki on 2010, December 28, 11:15 AM
在YII项目实施过程中,遇到一个问题,即,只在某一个module里需要获取IP的来源,并判断具体来自于何处。
默认在yii里取得客户端IP只有一个简单的方法,来自于ChttpRequest类,只是这里只有一个判断,即Remote_addr,而这个,一般来说是不准的,因此,我直接COPY了康盛的IP来源判断。
然后通过那个比较出名的iplocation类读取wry.dat,来获取IP的定位(iplocation仿佛是几年前王总写的还是andot写的?用来分析纯真IP库的。说起这个wry.dat,事实上,它的来源还真是要从以前的一款软件:追捕说起,但那个年代远了,早就消失在历史的长河中了。)
好吧,上面就是我要说的背景,于是,我认为,既然要在module里获取,那么我就在module的init方法里直接实现了吧。
然后,我把具体的获取IP,并且分析IP来源,并到数据库查询以获取Area_id的代码扔在了module 的 init 方法里,然后运行一看,直接502 bad gateway出现了。折腾了好久,发现都一直是502。
但是测试了一下,把这些代码COPY到Controller的action里面,又十分正常(因为没空研究module的实现),于是就把代码COPY到module的beforeAction方法中了。
然后问题解决。(没仔细想为什么,只是纯粹一个记录,让自己知道,尽量不要在init里写上一大堆实现代码。。。)
Tags: yii
PHP | 评论:1
| 阅读:18807