簡體   English   中英

在雄辯的ORM(Laravel PHP)中檢索關系數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM