Eloquent Eager Load Constraints 返回 JSON String 而不是 Object
Posted
技术标签:
【中文标题】Eloquent Eager Load Constraints 返回 JSON String 而不是 Object【英文标题】:Eloquent Eager Load Constraints returning JSON String instead 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
字符串。
【参考方案1】:
看起来代码是正确的,Laravel 会检测到你如何显示变量并显示与用例更相关的格式。
var_export()
将显示真实的对象解剖结构。如果需要调试。
【讨论】:
以上是关于Eloquent Eager Load Constraints 返回 JSON String 而不是 Object的主要内容,如果未能解决你的问题,请参考以下文章
Laravel:Eloquent Eager Loading 关系的选择
通过 Eager Loading 从 Eloquent 获取 RAW SQL 查询
如何使用 Laravel 的 Eloquent 关系与 Eager Loading 连接 3 个表?