[英]Retrieving relationship data in Eloquent ORM (Laravel PHP)
我正在创建Laravel应用,并使用Eloquent ORM从数据库检索数据,同时以JSON响应进行响应。 在此示例中,我通过关系(player1,matchRule ...)获得了与其他一些相关数据的匹配。
public function test() {
$match = Match::where("state", 2)
->with("player1", "player2", "points", "matchRule")->first();
return response()->json($match); // CASE A
return response()->json((object) ["id" => $match->id]); // CASE B
return response()->json((object) ["rule" => $match->match_rule]); // CASE C
}
在情况A中,一切正常,并返回所有相关数据。 例:
{
"id": 7,
"some_other_match_property": "something",
...
"match_rule": {
"rule_1": "something",
"rule_2": "something",
}
}
如果是B,我得到的只是match的ID,它也可以正常工作。
{
"id": 7
}
我是C,我想获取属性match_rule
但我得到的是null。 为什么? 如您所见,在情况A中返回整个匹配项时,它存在于$match
对象中。
{
"rule": null
}
乍一看,我可以看到您像这样加载了matchRule
关系( 驼峰案例 ):
$match = Match::where("state", 2)
->with("player1", "player2", "points", "matchRule")->first();
^^^^^^^^^^
但是然后您访问的是这样的关系( 蛇形 ):
return response()->json((object) ["rule" => $match->match_rule]);
^^^^^^^^^^^
这些是不相等的。 尝试以下方法:
return response()->json((object) ["rule" => $match->matchRule]);
^^^^^^^^^^
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.