Laravel 4 - JSON数据和未定义的方法

时间:2014-03-25 15:34:00

标签: php json laravel-4

我正在尝试从一些JSON数据中选择最后一个元素,但我得到了一个“Undefined Method”返回。 我的代码是从特定订单获取$ order_serialized数据,然后在该JSON数据中选择$ last_item并将其插入dd()以便立即进行测试。如果有人能够指出或解释我哪里出错了,我将非常感激!非常感谢你!

控制器:

public function getEdit($id){
    $order = Order::where('id', '=', $id);

    if($order->count()) {
        $order          = $order->first();
        $order_serialized   = json_decode($order->order_serialized);
        $last_item          = $order_serialized->last();


                    dd($last_item);


        foreach($order->order_serialized as $key => $value){
            $order->$key = $value;
        }
        return View::make('orders.edit')
                ->with('order', $order);
                /*->with('last_item', $last_item);*/
    }   else {
        return App::abort(404);
    }
}

2 个答案:

答案 0 :(得分:1)

json_decode将返回一个没有任何方法的stdClass对象,因此调用$order_serialized->last()会给你"未定义的方法"错误。为了在某​​个类上调用last方法,您将不得不实例化该类。我不知道如何将JSON解码为PHP中的特定类。

答案 1 :(得分:1)

当你这样做时

$order_serialized = json_decode($order->order_serialized);

您返回标准类对象,因此它没有任何last()方法。

我会这样做:

$order_serialized   = json_decode($order->order_serialized, true);
$last_item = array_pop($order_serialized);

true作为第二个参数发送到json_decode将为您提供一个数组而不是一个对象。