【问题标题】:Eloquent Eager Load Constraints returning JSON String instead ObjectEloquent Eager Load Constraints 返回 JSON String 而不是 Object
【发布时间】:2014-03-05 21:40:03
【问题描述】:

我正在尝试使用 Laravel 4.1 并使用一对多关系进行 Eloquent Eager Load。一切似乎都可以正常工作:

$groups = Group::with(array('points' => function($query) {
                $query->orderBy('pts', 'DESC');
         }))->get();

但是当我尝试读取属性时...

    foreach( $groups as $group ) {
        echo var_dump($group->points);
    }

它返回对象的 JSON 字符串(其中包含正确的数据)

我应该怎么做才能获取 PHP 对象而不是 JSON?

编辑: 这是我的模型

class Group extends Eloquent
{
    public $timestamps = true;

    public function points() {
        return $this->hasMany('Point');
    }

}

.

class Point extends Eloquent
{

    public function group() {
        return $this->belongsTo('Group');
    }

}

【问题讨论】:

  • 你试过json_decode()函数吗?
  • 我做到了,但是那样它就失去了 Laravel 的所有功能,它只是一个定义了属性的对象。不是 Eloquent ORM 实例。我想我一定是做错了什么,或者应该有办法获取 Eloquent 对象而不是 JSON 字符串。
  • 试试var_export($group->points)。
  • 问题不在于 var_dump,但您的建议帮助我了解如何正确显示它。谢谢。
  • Laravel 提供了一个 dd() (dump&die) 辅助函数来调试,如果打印或返回任何 Eloquent 对象,Laravel 将其转换为 json 字符串。

标签: php json orm laravel eloquent


【解决方案1】:

看起来代码是正确的,Laravel 会检测到你如何显示变量并显示与用例更相关的格式。

var_export() 将显示真实的对象解剖结构。如果需要调试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 2021-12-31
    • 2012-10-13
    • 2013-06-20
    • 1970-01-01
    • 2019-07-16
    相关资源
    最近更新 更多