【发布时间】:2014-06-18 08:32:17
【问题描述】:
我有一个模型Contract,它有一个projects 属性的访问器。该属性是“id”=> 数组的关联数组,但访问器将数组转换为 Project 模型的集合:
public function getProjectsAttribute($val)
{
$projects = array();
foreach($val as $projId => $projData)
{
$proj = new Project($this->roundingPrecision, $projData);
$proj->_id = $projId;
$projects[] = $proj;
}
return Collection::make($projects);
}
如果我得到一个 Contract 对象,我可以调用 $contract->projects 并且它按预期工作,但是,如果我将 $contract 作为 JSON 返回(例如在响应中),projects 节点是空的。我已经验证访问器被调用,但最终 JSON 不包含项目。
所以,Response::json($contract) 返回一个包含 projects : {} 的 JSON 对象,但 Response::json($contract->projects) 正确返回项目。
【问题讨论】: