0

我正在使用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用 finder 找到一个,我会得到相关的对象_plan

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

我究竟做错了什么?

4

2 回答 2

0

问题是 ActiveRecord 不支持这种行为。你可以在这里看到

于 2012-11-12T18:26:19.263 回答
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 发布的此链接

于 2012-11-13T07:07:24.100 回答