0

如何在我的ORM模型中使用核心类?

正在工作中:

protected static $_properties  = array(
    'id',
    'user_id',
    'v_key' => array('default' => 'abc' ),
    'a_key' => array('default' => 'def' ),
    'created_at',
    'updated_at'
);

不工作:

protected static $_properties  = array(
    'id',
    'v_key' => array('default' => Str::random('alnum', 6) ),
    'a_key' => array('default' => Str::random('alnum', 6) ),
    'created_at',
    'updated_at'
);

错误

谢谢!!

4

3 回答 3

1

您的实际问题是在 PHP 中进行静态分配时无法执行函数调用。如何初始化静态变量

于 2014-03-23T21:29:40.047 回答
0

好的,我使用了一个观察者来做到这一点。

/classes/observer/session.php

<?php

namespace Orm;

use Str;

class Observer_Session extends Observer {
  public function after_create(Model $session) {

    $session->v_key = Str::random('alnum', 6);
    $session->a_key = Str::random('alnum', 6);

  }

/classes/model/session.php

在此处输入图像描述

于 2014-03-23T15:34:08.343 回答
0

要动态设置默认值,您可以在会话模型中覆盖 forge 方法:

public static function forge($data = array(), $new = true, $view = null, $cache = true)
{

    $data = \Arr::merge(array(
        'v_key'      => \Str::random('alnum', 6),
        'a_key'      => \Str::random('alnum', 6),
    ), $data);

    return parent::forge($data, $new, $view, $cache);

}
于 2014-07-22T23:15:16.127 回答