PhpActiveRecord:创建初始化对象

时间:2012-11-12 15:13:38

标签: php activerecord phpactiverecord

我正在使用php activerecord。我需要初始化一个Order对象,然后将相关对象设置为如下所示

$order = new Order();
Order->_plan = Plan::find(1);

我收到错误Undefined property: Order->_plan in /var/www/ordenes-web/core/libs/php-activerecord/lib/Model.php on line 428

我的课程:

class Order extends ActiveRecord\Model{
    static $belongs_to = array( 
        array(
            '_plan',
            'class_name' => 'Plan',
            'foreign_key' => 'plan'
        ),
    );
}

这种关系很好。如果我在查找程序中找到Order,我会得到相关对象_plan

Order::find(1)->_plan // Works!

我做错了什么?

2 个答案:

答案 0 :(得分:0)

问题是ActiveRecord不支持此行为。您可以看到here

答案 1 :(得分:0)

这一行

Order->_plan

真的没有任何意义。您可以找到对象的属性,例如,$order对象。

此行表示您正在创建一个对象,然后找到_plan属性。哪个好。

 Order::find(1)->_plan // Works!

要使用对象执行此操作,您应该执行

$order = Order::find(1);
var_dump($order->_plan;) // should work!

现在您可以更改_plan中的内容(如果有),例如

$order->_plan->world = "Hello".

现在您应该记住,您在对象中设置关系,这就是它们的到达方式。你不应该创造像我这样的对象。你说的有用的例子就像

  • 找到ID为1的订单。
  • 得到它的计划。

但是你的例子没有用呢

  • 找到新订单
  • 将ID为1的计划分配给该订单。

最后一部分不像我想的那样工作,请参见@ Overflow012发布的this link