breezelfie

breezelfie

这家伙有点懒,还没写个性签名!

  • 财富值10
  • 威望值0
  • 总积分90

个人信息

  • 赞了回答

    1 首先运用事物必须是innodb引擎。其他无效,所以你先检查下数据库使用的引擎。

    2 当$i=1011的时候,$test->save() 会返回false,这仅仅是插入数据库没有成功,并不会抛出一个异常 只有产生异常的时候,才会被catch到,走catch里的代码。

    for循环完成后,因为没有产生异常,所以会走$tr->commit(); 这行代码。

    如果你想让插入失败也抛出异常的话,可以自己手动添加,这样失败的时候就会走catch里面的代码了。

    if($test->save()) {
      //插入成功
    } else {
      //插入失败
      throw new Exception('insert error'); 
    }
    
  • 赞了回答

    关于“行为”,建议你参考下这篇文章先了解下Mixinhttp://www.cnblogs.com/snandy/archive/2013/05/24/3086663.html

    Yii2 里面的 behavior 其实就是 Mixin 模式的一种实践,它的主要目的在于给一个类添加另外一个类的功能,其实是多重继承的一种方式。

    开始考虑觉得你的需求不适用 Mixin 模式,但是,仔细考虑下,还是可以用 behavior 以达到解耦的目的。

    仔细考虑了下,你的需求用 behavior 实现的大致思路如下:

    假设有 Model: Message,Comment。我们实现一个SendMessageBehavior 如下:

    class SendMessageBehavior extends Behavior {
       public function events() {
          [
            BaseActiveRecord::EVENT_AFTER_INSERT => "doSend",
          ]
       }
    
       public function doSend() {
           //执行Message::send方法
           Message::send($this->owner);
       }
    }
    

    将这个behavior绑定到 Comment 上面,以处理 EVENT_AFTER_INSERT 事件。

    
    class Comment extend ActiveRecord {
        public function behaviors() {
            return [
               SendMessageBehavior::className(),
            ];
        }
    }
    

    其思路就是在有新的评论时(comment 表的 insert 事件 ),执行 message::send方法。

  • 赞了回答

    Yii::$app->db->schema->refresh(); flush all the schema cache

    Yii::$app->db->schema->refreshTableSchema($tableName); clear the particular table schema cache

  • 赞了回答

    用缓存,\Yii::$app->cache->get('mykey');,只要不失效,全局皆可取之。

  • 用缓存,\Yii::$app->cache->get('mykey');,只要不失效,全局皆可取之。

  • 2015-08-03 已签到
    连续签到1天,获得了5个金钱
职场新人 等级规则
90/100
资料完整度
10/100
用户活跃度
0/100

Ta的关注

5

Ta的粉丝

3

Ta的访客

3