[{"data":1,"prerenderedAt":7355},["ShallowReactive",2],{"navigation-ja":3,"navigation-v1":81,"\u002Fja\u002Fguide\u002Fmodels":146,"\u002Fja\u002Fguide\u002Fmodels-surround":3924,"\u002Fja\u002Fguide\u002Fmodels-og":3929},[4,55,77],{"title":5,"path":6,"stem":7,"children":8},"ガイド","\u002Fja\u002Fguide","ja\u002F1.guide\u002F01.index",[9,11,15,19,23,27,31,35,39,43,47,51],{"title":10,"path":6,"stem":7},"イントロダクション",{"title":12,"path":13,"stem":14},"プロローグ","\u002Fja\u002Fguide\u002Fprologue","ja\u002F1.guide\u002F00.prologue",{"title":16,"path":17,"stem":18},"はじめに","\u002Fja\u002Fguide\u002Fgetting-started","ja\u002F1.guide\u002F02.getting-started",{"title":20,"path":21,"stem":22},"モデル","\u002Fja\u002Fguide\u002Fmodels","ja\u002F1.guide\u002F03.models",{"title":24,"path":25,"stem":26},"リレーション","\u002Fja\u002Fguide\u002Frelationships","ja\u002F1.guide\u002F04.relationships",{"title":28,"path":29,"stem":30},"フック","\u002Fja\u002Fguide\u002Fhooks","ja\u002F1.guide\u002F05.hooks",{"title":32,"path":33,"stem":34},"検索","\u002Fja\u002Fguide\u002Fsearch","ja\u002F1.guide\u002F06.search",{"title":36,"path":37,"stem":38},"バッチ操作","\u002Fja\u002Fguide\u002Fbatch-operations","ja\u002F1.guide\u002F07.batch-operations",{"title":40,"path":41,"stem":42},"クエリパラメータ","\u002Fja\u002Fguide\u002Fquery-parameters","ja\u002F1.guide\u002F08.query-parameters",{"title":44,"path":45,"stem":46},"セキュリティ","\u002Fja\u002Fguide\u002Fsecurity","ja\u002F1.guide\u002F09.security",{"title":48,"path":49,"stem":50},"レスポンス","\u002Fja\u002Fguide\u002Fresponses","ja\u002F1.guide\u002F10.responses",{"title":52,"path":53,"stem":54},"仕様書","\u002Fja\u002Fguide\u002Fspecifications","ja\u002F1.guide\u002F11.specifications",{"title":56,"path":57,"stem":58,"children":59},"TypeScript SDK","\u002Fja\u002Ftypescript-sdk","ja\u002F2.typescript-sdk\u002F01.index",[60,61,64,68,71,74],{"title":10,"path":57,"stem":58},{"title":16,"path":62,"stem":63},"\u002Fja\u002Ftypescript-sdk\u002Fgetting-started","ja\u002F2.typescript-sdk\u002F02.getting-started",{"title":65,"path":66,"stem":67},"設定","\u002Fja\u002Ftypescript-sdk\u002Fconfiguration","ja\u002F2.typescript-sdk\u002F03.configuration",{"title":20,"path":69,"stem":70},"\u002Fja\u002Ftypescript-sdk\u002Fmodels","ja\u002F2.typescript-sdk\u002F04.models",{"title":24,"path":72,"stem":73},"\u002Fja\u002Ftypescript-sdk\u002Frelationships","ja\u002F2.typescript-sdk\u002F05.relationships",{"title":40,"path":75,"stem":76},"\u002Fja\u002Ftypescript-sdk\u002Fquery-parameters","ja\u002F2.typescript-sdk\u002F06.query-parameters",{"title":78,"path":79,"stem":80},"スクリーンキャスト","\u002Fja\u002Fscreencasts","ja\u002Fscreencasts",[82,125],{"title":83,"path":84,"stem":85,"children":86},"Guide","\u002Fv1.x\u002Fguide","v1.x\u002F1.guide\u002F01.index",[87,89,93,97,101,105,109,113,117,121],{"title":88,"path":84,"stem":85},"Introduction",{"title":90,"path":91,"stem":92},"Getting Started","\u002Fv1.x\u002Fguide\u002Fgetting-started","v1.x\u002F1.guide\u002F02.getting-started",{"title":94,"path":95,"stem":96},"Models","\u002Fv1.x\u002Fguide\u002Fmodels","v1.x\u002F1.guide\u002F03.models",{"title":98,"path":99,"stem":100},"Relationships","\u002Fv1.x\u002Fguide\u002Frelationships","v1.x\u002F1.guide\u002F04.relationships",{"title":102,"path":103,"stem":104},"Hooks","\u002Fv1.x\u002Fguide\u002Fhooks","v1.x\u002F1.guide\u002F05.hooks",{"title":106,"path":107,"stem":108},"Search","\u002Fv1.x\u002Fguide\u002Fsearch","v1.x\u002F1.guide\u002F06.search",{"title":110,"path":111,"stem":112},"Batch Operations","\u002Fv1.x\u002Fguide\u002Fbatch-operations","v1.x\u002F1.guide\u002F07.batch-operations",{"title":114,"path":115,"stem":116},"Query Parameters","\u002Fv1.x\u002Fguide\u002Fquery-parameters","v1.x\u002F1.guide\u002F08.query-parameters",{"title":118,"path":119,"stem":120},"Security","\u002Fv1.x\u002Fguide\u002Fsecurity","v1.x\u002F1.guide\u002F09.security",{"title":122,"path":123,"stem":124},"Responses","\u002Fv1.x\u002Fguide\u002Fresponses","v1.x\u002F1.guide\u002F10.responses",{"title":56,"path":126,"stem":127,"children":128},"\u002Fv1.x\u002Ftypescript-sdk","v1.x\u002F2.typescript-sdk\u002F01.index",[129,130,133,137,140,143],{"title":88,"path":126,"stem":127},{"title":90,"path":131,"stem":132},"\u002Fv1.x\u002Ftypescript-sdk\u002Fgetting-started","v1.x\u002F2.typescript-sdk\u002F02.getting-started",{"title":134,"path":135,"stem":136},"Configuration","\u002Fv1.x\u002Ftypescript-sdk\u002Fconfiguration","v1.x\u002F2.typescript-sdk\u002F03.configuration",{"title":94,"path":138,"stem":139},"\u002Fv1.x\u002Ftypescript-sdk\u002Fmodels","v1.x\u002F2.typescript-sdk\u002F04.models",{"title":98,"path":141,"stem":142},"\u002Fv1.x\u002Ftypescript-sdk\u002Frelationships","v1.x\u002F2.typescript-sdk\u002F05.relationships",{"title":114,"path":144,"stem":145},"\u002Fv1.x\u002Ftypescript-sdk\u002Fquery-parameters","v1.x\u002F2.typescript-sdk\u002F06.query-parameters",{"id":147,"title":20,"body":148,"description":3918,"extension":3919,"links":3920,"meta":3921,"navigation":193,"path":21,"seo":3922,"stem":22,"__hash__":3923},"docs_ja\u002Fja\u002F1.guide\u002F03.models.md",{"type":149,"value":150,"toc":3904},"minimark",[151,155,165,353,357,368,531,560,563,566,738,748,1115,1118,1129,1261,1276,1383,1386,1397,1606,1609,1612,1615,1619,1628,1932,1935,1941,2236,2239,2255,2258,2594,2602,2605,2618,2621,2643,2659,2946,2949,2968,2978,3797,3800,3900],[152,153,154],"h2",{"id":154},"コントローラーのセットアップ",[156,157,158,159,164],"p",{},"モデルをAPI経由で公開するには、まずそのモデルに対応するコントローラーを作成する必要があります。",[160,161,163],"a",{"href":162},"\u002Fja\u002Fguide\u002Fgetting-started#%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AAcrud","はじめに - シンプルなCRUD","のセクションで見たとおり、モデルコントローラーの定義は非常に簡単です。",[166,167,172],"pre",{"className":168,"code":169,"language":170,"meta":171,"style":171},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * モデルの完全修飾クラス名\n     *\u002F\n    protected $model = Post::class; \u002F\u002F または \"App\\Models\\Post\"\n}\n","php","",[173,174,175,188,195,225,230,249,272,277,293,299,306,312,318,347],"code",{"__ignoreMap":171},[176,177,180,184],"span",{"class":178,"line":179},"line",1,[176,181,183],{"class":182},"sMK4o","\u003C?",[176,185,187],{"class":186},"sTEyZ","php\n",[176,189,191],{"class":178,"line":190},2,[176,192,194],{"emptyLinePlaceholder":193},true,"\n",[176,196,198,202,206,209,212,214,217,219,222],{"class":178,"line":197},3,[176,199,201],{"class":200},"sbssI","namespace",[176,203,205],{"class":204},"sBMFI"," App",[176,207,208],{"class":182},"\\",[176,210,211],{"class":204},"Http",[176,213,208],{"class":182},[176,215,216],{"class":204},"Controllers",[176,218,208],{"class":182},[176,220,221],{"class":204},"Api",[176,223,224],{"class":182},";\n",[176,226,228],{"class":178,"line":227},4,[176,229,194],{"emptyLinePlaceholder":193},[176,231,233,236,238,240,242,244,247],{"class":178,"line":232},5,[176,234,235],{"class":200},"use",[176,237,205],{"class":186},[176,239,208],{"class":182},[176,241,94],{"class":186},[176,243,208],{"class":182},[176,245,246],{"class":186},"Post",[176,248,224],{"class":182},[176,250,252,254,257,259,261,263,265,267,270],{"class":178,"line":251},6,[176,253,235],{"class":200},[176,255,256],{"class":186}," Orion",[176,258,208],{"class":182},[176,260,211],{"class":186},[176,262,208],{"class":182},[176,264,216],{"class":186},[176,266,208],{"class":182},[176,268,269],{"class":186},"Controller",[176,271,224],{"class":182},[176,273,275],{"class":178,"line":274},7,[176,276,194],{"emptyLinePlaceholder":193},[176,278,280,284,287,290],{"class":178,"line":279},8,[176,281,283],{"class":282},"spNyl","class",[176,285,286],{"class":204}," PostsController",[176,288,289],{"class":282}," extends",[176,291,292],{"class":204}," Controller\n",[176,294,296],{"class":178,"line":295},9,[176,297,298],{"class":182},"{\n",[176,300,302],{"class":178,"line":301},10,[176,303,305],{"class":304},"sHwdD","    \u002F**\n",[176,307,309],{"class":178,"line":308},11,[176,310,311],{"class":304},"     * モデルの完全修飾クラス名\n",[176,313,315],{"class":178,"line":314},12,[176,316,317],{"class":304},"     *\u002F\n",[176,319,321,324,327,330,333,336,339,341,344],{"class":178,"line":320},13,[176,322,323],{"class":282},"    protected",[176,325,326],{"class":182}," $",[176,328,329],{"class":186},"model ",[176,331,332],{"class":182},"=",[176,334,335],{"class":204}," Post",[176,337,338],{"class":182},"::",[176,340,283],{"class":200},[176,342,343],{"class":182},";",[176,345,346],{"class":304}," \u002F\u002F または \"App\\Models\\Post\"\n",[176,348,350],{"class":178,"line":349},14,[176,351,352],{"class":182},"}\n",[354,355,356],"h3",{"id":356},"ペジネーションの無効化",[156,358,359,360,363,364,367],{},"デフォルトでは、",[173,361,362],{},"index","エンドポイントが返すリソースはペジネーションされます。ペジネーションを無効化してすべてのリソースを返すには、",[173,365,366],{},"DisablePagination","トレイトを使用します。",[166,369,371],{"className":168,"code":370,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\nuse Orion\\Concerns\\DisablePagination;\n\nclass PostsController extends Controller\n{\n    use DisablePagination;\n\n    \u002F**\n     * モデルの完全修飾クラス名\n     *\u002F\n    protected $model = Post::class; \u002F\u002F または \"App\\Models\\Post\"\n}\n",[173,372,373,379,383,403,407,423,443,460,464,474,478,488,492,496,500,505,526],{"__ignoreMap":171},[176,374,375,377],{"class":178,"line":179},[176,376,183],{"class":182},[176,378,187],{"class":186},[176,380,381],{"class":178,"line":190},[176,382,194],{"emptyLinePlaceholder":193},[176,384,385,387,389,391,393,395,397,399,401],{"class":178,"line":197},[176,386,201],{"class":200},[176,388,205],{"class":204},[176,390,208],{"class":182},[176,392,211],{"class":204},[176,394,208],{"class":182},[176,396,216],{"class":204},[176,398,208],{"class":182},[176,400,221],{"class":204},[176,402,224],{"class":182},[176,404,405],{"class":178,"line":227},[176,406,194],{"emptyLinePlaceholder":193},[176,408,409,411,413,415,417,419,421],{"class":178,"line":232},[176,410,235],{"class":200},[176,412,205],{"class":186},[176,414,208],{"class":182},[176,416,94],{"class":186},[176,418,208],{"class":182},[176,420,246],{"class":186},[176,422,224],{"class":182},[176,424,425,427,429,431,433,435,437,439,441],{"class":178,"line":251},[176,426,235],{"class":200},[176,428,256],{"class":186},[176,430,208],{"class":182},[176,432,211],{"class":186},[176,434,208],{"class":182},[176,436,216],{"class":186},[176,438,208],{"class":182},[176,440,269],{"class":186},[176,442,224],{"class":182},[176,444,445,447,449,451,454,456,458],{"class":178,"line":274},[176,446,235],{"class":200},[176,448,256],{"class":186},[176,450,208],{"class":182},[176,452,453],{"class":186},"Concerns",[176,455,208],{"class":182},[176,457,366],{"class":186},[176,459,224],{"class":182},[176,461,462],{"class":178,"line":279},[176,463,194],{"emptyLinePlaceholder":193},[176,465,466,468,470,472],{"class":178,"line":295},[176,467,283],{"class":282},[176,469,286],{"class":204},[176,471,289],{"class":282},[176,473,292],{"class":204},[176,475,476],{"class":178,"line":301},[176,477,298],{"class":182},[176,479,480,483,486],{"class":178,"line":308},[176,481,482],{"class":200},"    use",[176,484,485],{"class":186}," DisablePagination",[176,487,224],{"class":182},[176,489,490],{"class":178,"line":314},[176,491,194],{"emptyLinePlaceholder":193},[176,493,494],{"class":178,"line":320},[176,495,305],{"class":304},[176,497,498],{"class":178,"line":349},[176,499,311],{"class":304},[176,501,503],{"class":178,"line":502},15,[176,504,317],{"class":304},[176,506,508,510,512,514,516,518,520,522,524],{"class":178,"line":507},16,[176,509,323],{"class":282},[176,511,326],{"class":182},[176,513,329],{"class":186},[176,515,332],{"class":182},[176,517,335],{"class":204},[176,519,338],{"class":182},[176,521,283],{"class":200},[176,523,343],{"class":182},[176,525,346],{"class":304},[176,527,529],{"class":178,"line":528},17,[176,530,352],{"class":182},[532,533,535,538],"note",{"icon":534},"i-lucide-lightbulb",[156,536,537],{},"要点",[539,540,541,549,555],"ul",{},[542,543,544,545,548],"li",{},"モデルコントローラーは常に",[173,546,547],{},"Orion\\Http\\Controllers\\Controller","を継承します",[542,550,551,554],{},[173,552,553],{},"$model","プロパティには完全修飾のモデルクラス名を設定します",[542,556,557,559],{},[173,558,366],{},"トレイトを使用すると、モデルリソースとリレーションリソースの両方でペジネーションを無効化できます",[152,561,562],{"id":562},"ルートのセットアップ",[156,564,565],{},"コントローラーを作成したら、次はルートを登録します。",[166,567,569],{"className":168,"code":568,"language":170,"meta":171,"style":171},"\u003C?php\n\nuse Illuminate\\Support\\Facades\\Route;\nuse Orion\\Facades\\Orion;\nuse App\\Http\\Controllers\\PostsController;\n\nRoute::group(['as' => 'api.'], function() {\n    ...\n    Orion::resource('posts', PostsController::class);\n    ...\n});\n\n",[173,570,571,577,581,605,622,643,647,692,697,729,733],{"__ignoreMap":171},[176,572,573,575],{"class":178,"line":179},[176,574,183],{"class":182},[176,576,187],{"class":186},[176,578,579],{"class":178,"line":190},[176,580,194],{"emptyLinePlaceholder":193},[176,582,583,585,588,590,593,595,598,600,603],{"class":178,"line":197},[176,584,235],{"class":200},[176,586,587],{"class":186}," Illuminate",[176,589,208],{"class":182},[176,591,592],{"class":186},"Support",[176,594,208],{"class":182},[176,596,597],{"class":186},"Facades",[176,599,208],{"class":182},[176,601,602],{"class":186},"Route",[176,604,224],{"class":182},[176,606,607,609,611,613,615,617,620],{"class":178,"line":227},[176,608,235],{"class":200},[176,610,256],{"class":186},[176,612,208],{"class":182},[176,614,597],{"class":186},[176,616,208],{"class":182},[176,618,619],{"class":186},"Orion",[176,621,224],{"class":182},[176,623,624,626,628,630,632,634,636,638,641],{"class":178,"line":232},[176,625,235],{"class":200},[176,627,205],{"class":186},[176,629,208],{"class":182},[176,631,211],{"class":186},[176,633,208],{"class":182},[176,635,216],{"class":186},[176,637,208],{"class":182},[176,639,640],{"class":186},"PostsController",[176,642,224],{"class":182},[176,644,645],{"class":178,"line":251},[176,646,194],{"emptyLinePlaceholder":193},[176,648,649,651,653,657,660,663,667,669,672,675,678,680,683,686,689],{"class":178,"line":274},[176,650,602],{"class":204},[176,652,338],{"class":182},[176,654,656],{"class":655},"s2Zo4","group",[176,658,659],{"class":182},"([",[176,661,662],{"class":182},"'",[176,664,666],{"class":665},"sfazB","as",[176,668,662],{"class":182},[176,670,671],{"class":182}," =>",[176,673,674],{"class":182}," '",[176,676,677],{"class":665},"api.",[176,679,662],{"class":182},[176,681,682],{"class":182},"],",[176,684,685],{"class":282}," function",[176,687,688],{"class":182},"()",[176,690,691],{"class":182}," {\n",[176,693,694],{"class":178,"line":279},[176,695,696],{"class":182},"    ...\n",[176,698,699,702,704,707,710,712,715,717,720,722,724,726],{"class":178,"line":295},[176,700,701],{"class":204},"    Orion",[176,703,338],{"class":182},[176,705,706],{"class":655},"resource",[176,708,709],{"class":182},"(",[176,711,662],{"class":182},[176,713,714],{"class":665},"posts",[176,716,662],{"class":182},[176,718,719],{"class":182},",",[176,721,286],{"class":204},[176,723,338],{"class":182},[176,725,283],{"class":200},[176,727,728],{"class":182},");\n",[176,730,731],{"class":178,"line":301},[176,732,696],{"class":182},[176,734,735],{"class":178,"line":308},[176,736,737],{"class":182},"});\n",[156,739,740,743,744,747],{},[173,741,742],{},"Orion::resource","メソッドは、本質的にはLaravel標準の",[173,745,746],{},"Route::apiResource","と同じで、リソースに対するさまざまなアクションを処理するための複数のルートを作成します。",[166,749,753],{"className":750,"code":751,"language":752,"meta":171,"style":171},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","+--------+-----------+-------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------+-------------------------------------------------+\n| Domain | Method    | URI                                             | Name                                   | Action                                                                    | Middleware                                      |\n+--------+-----------+-------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------+-------------------------------------------------+\n...\n|        | GET|HEAD  | api\u002Fposts                                       | api.posts.index                        | App\\Http\\Controllers\\Api\\PostsController@index                            | api                                             |\n|        | POST      | api\u002Fposts\u002Fsearch                                | api.posts.search                       | App\\Http\\Controllers\\Api\\PostsController@index                            | api                                             |\n|        | POST      | api\u002Fposts                                       | api.posts.store                        | App\\Http\\Controllers\\Api\\PostsController@store                            | api                                             |\n|        | GET|HEAD  | api\u002Fposts\u002F{post}                                | api.posts.show                         | App\\Http\\Controllers\\Api\\PostsController@show                             | api                                             |  \n|        | PUT|PATCH | api\u002Fposts\u002F{post}                                | api.posts.update                       | App\\Http\\Controllers\\Api\\PostsController@update                           | api                                             |\n|        | DELETE    | api\u002Fposts\u002F{post}                                | api.posts.destroy                      | App\\Http\\Controllers\\Api\\PostsController@destroy                          | api                                             |\n|        | POST      | api\u002Fposts\u002Fbatch                                 | api.posts.batchStore                   | App\\Http\\Controllers\\Api\\PostsController@batchStore                       | api                                             |\n|        | PATCH     | api\u002Fposts\u002Fbatch                                 | api.posts.batchUpdate                  | App\\Http\\Controllers\\Api\\PostsController@batchUpdate                      | api                                             |\n|        | DELETE    | api\u002Fposts\u002Fbatch                                 | api.posts.batchDestroy                 | App\\Http\\Controllers\\Api\\PostsController@batchDestroy                     | api                                             |\n","bash",[173,754,755,760,801,805,810,852,884,912,953,990,1023,1054,1085],{"__ignoreMap":171},[176,756,757],{"class":178,"line":179},[176,758,759],{"class":204},"+--------+-----------+-------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------+-------------------------------------------------+\n",[176,761,762,765,768,771,774,777,780,783,786,789,792,795,798],{"class":178,"line":190},[176,763,764],{"class":182},"|",[176,766,767],{"class":204}," Domain",[176,769,770],{"class":182}," |",[176,772,773],{"class":204}," Method",[176,775,776],{"class":182},"    |",[176,778,779],{"class":204}," URI",[176,781,782],{"class":182},"                                             |",[176,784,785],{"class":204}," Name",[176,787,788],{"class":182},"                                   |",[176,790,791],{"class":204}," Action",[176,793,794],{"class":182},"                                                                    |",[176,796,797],{"class":204}," Middleware",[176,799,800],{"class":182},"                                      |\n",[176,802,803],{"class":178,"line":197},[176,804,759],{"class":204},[176,806,807],{"class":178,"line":227},[176,808,809],{"class":655},"...\n",[176,811,812,814,817,820,822,825,828,831,834,837,840,843,846,849],{"class":178,"line":232},[176,813,764],{"class":182},[176,815,816],{"class":182},"        |",[176,818,819],{"class":204}," GET",[176,821,764],{"class":182},[176,823,824],{"class":204},"HEAD",[176,826,827],{"class":182},"  |",[176,829,830],{"class":204}," api\u002Fposts",[176,832,833],{"class":182},"                                       |",[176,835,836],{"class":204}," api.posts.index",[176,838,839],{"class":182},"                        |",[176,841,842],{"class":204}," App\\Http\\Controllers\\Api\\PostsController@index",[176,844,845],{"class":182},"                            |",[176,847,848],{"class":204}," api",[176,850,851],{"class":182},"                                             |\n",[176,853,854,856,858,861,864,867,870,873,876,878,880,882],{"class":178,"line":251},[176,855,764],{"class":182},[176,857,816],{"class":182},[176,859,860],{"class":204}," POST",[176,862,863],{"class":182},"      |",[176,865,866],{"class":204}," api\u002Fposts\u002Fsearch",[176,868,869],{"class":182},"                                |",[176,871,872],{"class":204}," api.posts.search",[176,874,875],{"class":182},"                       |",[176,877,842],{"class":204},[176,879,845],{"class":182},[176,881,848],{"class":204},[176,883,851],{"class":182},[176,885,886,888,890,892,894,896,898,901,903,906,908,910],{"class":178,"line":274},[176,887,764],{"class":182},[176,889,816],{"class":182},[176,891,860],{"class":204},[176,893,863],{"class":182},[176,895,830],{"class":204},[176,897,833],{"class":182},[176,899,900],{"class":204}," api.posts.store",[176,902,839],{"class":182},[176,904,905],{"class":204}," App\\Http\\Controllers\\Api\\PostsController@store",[176,907,845],{"class":182},[176,909,848],{"class":204},[176,911,851],{"class":182},[176,913,914,916,918,920,922,924,926,929,932,934,937,940,943,946,948,950],{"class":178,"line":279},[176,915,764],{"class":182},[176,917,816],{"class":182},[176,919,819],{"class":204},[176,921,764],{"class":182},[176,923,824],{"class":204},[176,925,827],{"class":182},[176,927,928],{"class":204}," api\u002Fposts\u002F",[176,930,931],{"class":665},"{post}",[176,933,869],{"class":182},[176,935,936],{"class":204}," api.posts.show",[176,938,939],{"class":182},"                         |",[176,941,942],{"class":204}," App\\Http\\Controllers\\Api\\PostsController@show",[176,944,945],{"class":182},"                             |",[176,947,848],{"class":204},[176,949,782],{"class":182},[176,951,952],{"class":186},"  \n",[176,954,955,957,959,962,964,967,969,971,973,975,978,980,983,986,988],{"class":178,"line":295},[176,956,764],{"class":182},[176,958,816],{"class":182},[176,960,961],{"class":204}," PUT",[176,963,764],{"class":182},[176,965,966],{"class":204},"PATCH",[176,968,770],{"class":182},[176,970,928],{"class":204},[176,972,931],{"class":665},[176,974,869],{"class":182},[176,976,977],{"class":204}," api.posts.update",[176,979,875],{"class":182},[176,981,982],{"class":204}," App\\Http\\Controllers\\Api\\PostsController@update",[176,984,985],{"class":182},"                           |",[176,987,848],{"class":204},[176,989,851],{"class":182},[176,991,992,994,996,999,1001,1003,1005,1007,1010,1013,1016,1019,1021],{"class":178,"line":301},[176,993,764],{"class":182},[176,995,816],{"class":182},[176,997,998],{"class":204}," DELETE",[176,1000,776],{"class":182},[176,1002,928],{"class":204},[176,1004,931],{"class":665},[176,1006,869],{"class":182},[176,1008,1009],{"class":204}," api.posts.destroy",[176,1011,1012],{"class":182},"                      |",[176,1014,1015],{"class":204}," App\\Http\\Controllers\\Api\\PostsController@destroy",[176,1017,1018],{"class":182},"                          |",[176,1020,848],{"class":204},[176,1022,851],{"class":182},[176,1024,1025,1027,1029,1031,1033,1036,1039,1042,1045,1048,1050,1052],{"class":178,"line":308},[176,1026,764],{"class":182},[176,1028,816],{"class":182},[176,1030,860],{"class":204},[176,1032,863],{"class":182},[176,1034,1035],{"class":204}," api\u002Fposts\u002Fbatch",[176,1037,1038],{"class":182},"                                 |",[176,1040,1041],{"class":204}," api.posts.batchStore",[176,1043,1044],{"class":182},"                   |",[176,1046,1047],{"class":204}," App\\Http\\Controllers\\Api\\PostsController@batchStore",[176,1049,875],{"class":182},[176,1051,848],{"class":204},[176,1053,851],{"class":182},[176,1055,1056,1058,1060,1063,1066,1068,1070,1073,1076,1079,1081,1083],{"class":178,"line":314},[176,1057,764],{"class":182},[176,1059,816],{"class":182},[176,1061,1062],{"class":204}," PATCH",[176,1064,1065],{"class":182},"     |",[176,1067,1035],{"class":204},[176,1069,1038],{"class":182},[176,1071,1072],{"class":204}," api.posts.batchUpdate",[176,1074,1075],{"class":182},"                  |",[176,1077,1078],{"class":204}," App\\Http\\Controllers\\Api\\PostsController@batchUpdate",[176,1080,1012],{"class":182},[176,1082,848],{"class":204},[176,1084,851],{"class":182},[176,1086,1087,1089,1091,1093,1095,1097,1099,1102,1105,1108,1111,1113],{"class":178,"line":320},[176,1088,764],{"class":182},[176,1090,816],{"class":182},[176,1092,998],{"class":204},[176,1094,776],{"class":182},[176,1096,1035],{"class":204},[176,1098,1038],{"class":182},[176,1100,1101],{"class":204}," api.posts.batchDestroy",[176,1103,1104],{"class":182},"                 |",[176,1106,1107],{"class":204}," App\\Http\\Controllers\\Api\\PostsController@batchDestroy",[176,1109,1110],{"class":182},"                     |",[176,1112,848],{"class":204},[176,1114,851],{"class":182},[354,1116,1117],{"id":1117},"ソフトデリート",[156,1119,1120,1121,1124,1125,1128],{},"モデルが",[173,1122,1123],{},"SoftDeletes","トレイトを使用しており、同じ機能をAPI経由でも公開したい場合は、リソース登録時に",[173,1126,1127],{},"withSoftDeletes","メソッドを呼び出します。",[166,1130,1132],{"className":168,"code":1131,"language":170,"meta":171,"style":171},"\u003C?php\n\nuse Illuminate\\Support\\Facades\\Route;\nuse Orion\\Facades\\Orion;\n\nRoute::group(['as' => 'api.'], function() {\n    ...\n    Orion::resource('posts', 'Api\\PostsController')->withSoftDeletes();\n    ...\n});\n\n",[173,1133,1134,1140,1144,1164,1180,1184,1216,1220,1253,1257],{"__ignoreMap":171},[176,1135,1136,1138],{"class":178,"line":179},[176,1137,183],{"class":182},[176,1139,187],{"class":186},[176,1141,1142],{"class":178,"line":190},[176,1143,194],{"emptyLinePlaceholder":193},[176,1145,1146,1148,1150,1152,1154,1156,1158,1160,1162],{"class":178,"line":197},[176,1147,235],{"class":200},[176,1149,587],{"class":186},[176,1151,208],{"class":182},[176,1153,592],{"class":186},[176,1155,208],{"class":182},[176,1157,597],{"class":186},[176,1159,208],{"class":182},[176,1161,602],{"class":186},[176,1163,224],{"class":182},[176,1165,1166,1168,1170,1172,1174,1176,1178],{"class":178,"line":227},[176,1167,235],{"class":200},[176,1169,256],{"class":186},[176,1171,208],{"class":182},[176,1173,597],{"class":186},[176,1175,208],{"class":182},[176,1177,619],{"class":186},[176,1179,224],{"class":182},[176,1181,1182],{"class":178,"line":232},[176,1183,194],{"emptyLinePlaceholder":193},[176,1185,1186,1188,1190,1192,1194,1196,1198,1200,1202,1204,1206,1208,1210,1212,1214],{"class":178,"line":251},[176,1187,602],{"class":204},[176,1189,338],{"class":182},[176,1191,656],{"class":655},[176,1193,659],{"class":182},[176,1195,662],{"class":182},[176,1197,666],{"class":665},[176,1199,662],{"class":182},[176,1201,671],{"class":182},[176,1203,674],{"class":182},[176,1205,677],{"class":665},[176,1207,662],{"class":182},[176,1209,682],{"class":182},[176,1211,685],{"class":282},[176,1213,688],{"class":182},[176,1215,691],{"class":182},[176,1217,1218],{"class":178,"line":274},[176,1219,696],{"class":182},[176,1221,1222,1224,1226,1228,1230,1232,1234,1236,1238,1240,1243,1245,1248,1250],{"class":178,"line":279},[176,1223,701],{"class":204},[176,1225,338],{"class":182},[176,1227,706],{"class":655},[176,1229,709],{"class":182},[176,1231,662],{"class":182},[176,1233,714],{"class":665},[176,1235,662],{"class":182},[176,1237,719],{"class":182},[176,1239,674],{"class":182},[176,1241,1242],{"class":665},"Api\\PostsController",[176,1244,662],{"class":182},[176,1246,1247],{"class":182},")->",[176,1249,1127],{"class":655},[176,1251,1252],{"class":182},"();\n",[176,1254,1255],{"class":178,"line":295},[176,1256,696],{"class":182},[176,1258,1259],{"class":178,"line":301},[176,1260,737],{"class":182},[156,1262,1263,1264,1267,1268,1271,1272,1275],{},"これにより、",[173,1265,1266],{},"restore","および",[173,1269,1270],{},"batchRestore","エンドポイントが追加されます。API経由でリソースを完全削除(force delete)する方法については、関連する",[160,1273,40],{"href":1274},"\u002Fja\u002Fguide\u002Fquery-parameters#%E3%82%BD%E3%83%95%E3%83%88%E3%83%87%E3%83%AA%E3%83%BC%E3%83%88","のセクションを参照してください。",[166,1277,1279],{"className":750,"code":1278,"language":752,"meta":171,"style":171},"+--------+-----------+-------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------+-------------------------------------------------+\n| Domain | Method    | URI                                             | Name                                   | Action                                                                    | Middleware                                      |\n+--------+-----------+-------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------+-------------------------------------------------+\n...\n|        | POST      | api\u002Fposts\u002F{post}\u002Frestore                        | api.posts.restore                      | App\\Http\\Controllers\\Api\\PostsController@restore                          | api                                             |\n|        | POST      | api\u002Fposts\u002Fbatch\u002Frestore                         | api.posts.batchRestore                 | App\\Http\\Controllers\\Api\\PostsController@batchRestore                     | api                                             |\n",[173,1280,1281,1285,1313,1317,1321,1354],{"__ignoreMap":171},[176,1282,1283],{"class":178,"line":179},[176,1284,759],{"class":204},[176,1286,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311],{"class":178,"line":190},[176,1288,764],{"class":182},[176,1290,767],{"class":204},[176,1292,770],{"class":182},[176,1294,773],{"class":204},[176,1296,776],{"class":182},[176,1298,779],{"class":204},[176,1300,782],{"class":182},[176,1302,785],{"class":204},[176,1304,788],{"class":182},[176,1306,791],{"class":204},[176,1308,794],{"class":182},[176,1310,797],{"class":204},[176,1312,800],{"class":182},[176,1314,1315],{"class":178,"line":197},[176,1316,759],{"class":204},[176,1318,1319],{"class":178,"line":227},[176,1320,809],{"class":655},[176,1322,1323,1325,1327,1329,1331,1333,1335,1338,1340,1343,1345,1348,1350,1352],{"class":178,"line":232},[176,1324,764],{"class":182},[176,1326,816],{"class":182},[176,1328,860],{"class":204},[176,1330,863],{"class":182},[176,1332,928],{"class":204},[176,1334,931],{"class":665},[176,1336,1337],{"class":204},"\u002Frestore",[176,1339,839],{"class":182},[176,1341,1342],{"class":204}," api.posts.restore",[176,1344,1012],{"class":182},[176,1346,1347],{"class":204}," App\\Http\\Controllers\\Api\\PostsController@restore",[176,1349,1018],{"class":182},[176,1351,848],{"class":204},[176,1353,851],{"class":182},[176,1355,1356,1358,1360,1362,1364,1367,1369,1372,1374,1377,1379,1381],{"class":178,"line":251},[176,1357,764],{"class":182},[176,1359,816],{"class":182},[176,1361,860],{"class":204},[176,1363,863],{"class":182},[176,1365,1366],{"class":204}," api\u002Fposts\u002Fbatch\u002Frestore",[176,1368,939],{"class":182},[176,1370,1371],{"class":204}," api.posts.batchRestore",[176,1373,1104],{"class":182},[176,1375,1376],{"class":204}," App\\Http\\Controllers\\Api\\PostsController@batchRestore",[176,1378,1110],{"class":182},[176,1380,848],{"class":204},[176,1382,851],{"class":182},[152,1384,1385],{"id":1385},"キーのカスタマイズ",[156,1387,1388,1389,1392,1393,1396],{},"デフォルトでは、エンドポイントはデータベースからモデルを取得する際に主キー(通常は",[173,1390,1391],{},"id",")を使用します。しかし、主キーはそのまま維持しつつ、別のフィールドを使用してモデルを取得したい場合もあります。その場合は、コントローラーの",[173,1394,1395],{},"keyName","メソッドをオーバーライドします。",[166,1398,1400],{"className":168,"code":1399,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * モデルの完全修飾クラス名\n     *\u002F\n    protected $model = Post::class; \u002F\u002F または \"App\\Models\\Post\"\n\n    \u002F**\n     * データベースからリソースを取得するために使用されるフィールド名。\n     *\n     * @return string\n     *\u002F\n    protected function keyName(): string\n    {\n        return 'slug';\n    }\n}\n",[173,1401,1402,1408,1412,1432,1436,1452,1472,1476,1486,1490,1494,1498,1502,1522,1526,1530,1535,1540,1553,1558,1573,1579,1595,1601],{"__ignoreMap":171},[176,1403,1404,1406],{"class":178,"line":179},[176,1405,183],{"class":182},[176,1407,187],{"class":186},[176,1409,1410],{"class":178,"line":190},[176,1411,194],{"emptyLinePlaceholder":193},[176,1413,1414,1416,1418,1420,1422,1424,1426,1428,1430],{"class":178,"line":197},[176,1415,201],{"class":200},[176,1417,205],{"class":204},[176,1419,208],{"class":182},[176,1421,211],{"class":204},[176,1423,208],{"class":182},[176,1425,216],{"class":204},[176,1427,208],{"class":182},[176,1429,221],{"class":204},[176,1431,224],{"class":182},[176,1433,1434],{"class":178,"line":227},[176,1435,194],{"emptyLinePlaceholder":193},[176,1437,1438,1440,1442,1444,1446,1448,1450],{"class":178,"line":232},[176,1439,235],{"class":200},[176,1441,205],{"class":186},[176,1443,208],{"class":182},[176,1445,94],{"class":186},[176,1447,208],{"class":182},[176,1449,246],{"class":186},[176,1451,224],{"class":182},[176,1453,1454,1456,1458,1460,1462,1464,1466,1468,1470],{"class":178,"line":251},[176,1455,235],{"class":200},[176,1457,256],{"class":186},[176,1459,208],{"class":182},[176,1461,211],{"class":186},[176,1463,208],{"class":182},[176,1465,216],{"class":186},[176,1467,208],{"class":182},[176,1469,269],{"class":186},[176,1471,224],{"class":182},[176,1473,1474],{"class":178,"line":274},[176,1475,194],{"emptyLinePlaceholder":193},[176,1477,1478,1480,1482,1484],{"class":178,"line":279},[176,1479,283],{"class":282},[176,1481,286],{"class":204},[176,1483,289],{"class":282},[176,1485,292],{"class":204},[176,1487,1488],{"class":178,"line":295},[176,1489,298],{"class":182},[176,1491,1492],{"class":178,"line":301},[176,1493,305],{"class":304},[176,1495,1496],{"class":178,"line":308},[176,1497,311],{"class":304},[176,1499,1500],{"class":178,"line":314},[176,1501,317],{"class":304},[176,1503,1504,1506,1508,1510,1512,1514,1516,1518,1520],{"class":178,"line":320},[176,1505,323],{"class":282},[176,1507,326],{"class":182},[176,1509,329],{"class":186},[176,1511,332],{"class":182},[176,1513,335],{"class":204},[176,1515,338],{"class":182},[176,1517,283],{"class":200},[176,1519,343],{"class":182},[176,1521,346],{"class":304},[176,1523,1524],{"class":178,"line":349},[176,1525,194],{"emptyLinePlaceholder":193},[176,1527,1528],{"class":178,"line":502},[176,1529,305],{"class":304},[176,1531,1532],{"class":178,"line":507},[176,1533,1534],{"class":304},"     * データベースからリソースを取得するために使用されるフィールド名。\n",[176,1536,1537],{"class":178,"line":528},[176,1538,1539],{"class":304},"     *\n",[176,1541,1543,1546,1550],{"class":178,"line":1542},18,[176,1544,1545],{"class":304},"     * ",[176,1547,1549],{"class":1548},"svl4J","@return",[176,1551,1552],{"class":1548}," string\n",[176,1554,1556],{"class":178,"line":1555},19,[176,1557,317],{"class":304},[176,1559,1561,1563,1565,1568,1571],{"class":178,"line":1560},20,[176,1562,323],{"class":282},[176,1564,685],{"class":282},[176,1566,1567],{"class":655}," keyName",[176,1569,1570],{"class":182},"():",[176,1572,1552],{"class":200},[176,1574,1576],{"class":178,"line":1575},21,[176,1577,1578],{"class":182},"    {\n",[176,1580,1582,1586,1588,1591,1593],{"class":178,"line":1581},22,[176,1583,1585],{"class":1584},"s7zQu","        return",[176,1587,674],{"class":182},[176,1589,1590],{"class":665},"slug",[176,1592,662],{"class":182},[176,1594,224],{"class":182},[176,1596,1598],{"class":178,"line":1597},23,[176,1599,1600],{"class":182},"    }\n",[176,1602,1604],{"class":178,"line":1603},24,[176,1605,352],{"class":182},[152,1607,1608],{"id":1608},"クエリのカスタマイズ",[156,1610,1611],{},"Orionは非常に柔軟で、各エンドポイントにおけるEloquentクエリの構築方法と実行方法を再定義できます。",[354,1613,1614],{"id":1614},"個別のエンドポイントの場合",[1616,1617,1618],"h4",{"id":1618},"クエリの構築",[156,1620,1621,1622,1624,1625,1396],{},"たとえば、",[173,1623,362],{},"エンドポイントで公開済みのブログ記事のみを返したいとします。その場合は、コントローラーの",[173,1626,1627],{},"buildIndexFetchQuery",[166,1629,1631],{"className":168,"code":1630,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * モデルの完全修飾クラス名\n     *\u002F\n    protected $model = Post::class; \u002F\u002F または \"App\\Models\\Post\"\n\n    \u002F**\n     * index メソッドでエンティティを取得するための Eloquent クエリを構築します。\n     *\n     * @param Request $request\n     * @param array $requestedRelations\n     * @return Builder\n     *\u002F\n    protected function buildIndexFetchQuery(Request $request, array $requestedRelations): Builder\n    {\n        $query = parent::buildIndexFetchQuery($request, $requestedRelations);\n\n        $query->whereNotNull('published_at');\n\n        return $query;\n    }\n}\n",[173,1632,1633,1639,1643,1663,1667,1683,1703,1707,1717,1721,1725,1729,1733,1753,1757,1761,1766,1770,1784,1796,1805,1809,1842,1846,1876,1881,1906,1911,1922,1927],{"__ignoreMap":171},[176,1634,1635,1637],{"class":178,"line":179},[176,1636,183],{"class":182},[176,1638,187],{"class":186},[176,1640,1641],{"class":178,"line":190},[176,1642,194],{"emptyLinePlaceholder":193},[176,1644,1645,1647,1649,1651,1653,1655,1657,1659,1661],{"class":178,"line":197},[176,1646,201],{"class":200},[176,1648,205],{"class":204},[176,1650,208],{"class":182},[176,1652,211],{"class":204},[176,1654,208],{"class":182},[176,1656,216],{"class":204},[176,1658,208],{"class":182},[176,1660,221],{"class":204},[176,1662,224],{"class":182},[176,1664,1665],{"class":178,"line":227},[176,1666,194],{"emptyLinePlaceholder":193},[176,1668,1669,1671,1673,1675,1677,1679,1681],{"class":178,"line":232},[176,1670,235],{"class":200},[176,1672,205],{"class":186},[176,1674,208],{"class":182},[176,1676,94],{"class":186},[176,1678,208],{"class":182},[176,1680,246],{"class":186},[176,1682,224],{"class":182},[176,1684,1685,1687,1689,1691,1693,1695,1697,1699,1701],{"class":178,"line":251},[176,1686,235],{"class":200},[176,1688,256],{"class":186},[176,1690,208],{"class":182},[176,1692,211],{"class":186},[176,1694,208],{"class":182},[176,1696,216],{"class":186},[176,1698,208],{"class":182},[176,1700,269],{"class":186},[176,1702,224],{"class":182},[176,1704,1705],{"class":178,"line":274},[176,1706,194],{"emptyLinePlaceholder":193},[176,1708,1709,1711,1713,1715],{"class":178,"line":279},[176,1710,283],{"class":282},[176,1712,286],{"class":204},[176,1714,289],{"class":282},[176,1716,292],{"class":204},[176,1718,1719],{"class":178,"line":295},[176,1720,298],{"class":182},[176,1722,1723],{"class":178,"line":301},[176,1724,305],{"class":304},[176,1726,1727],{"class":178,"line":308},[176,1728,311],{"class":304},[176,1730,1731],{"class":178,"line":314},[176,1732,317],{"class":304},[176,1734,1735,1737,1739,1741,1743,1745,1747,1749,1751],{"class":178,"line":320},[176,1736,323],{"class":282},[176,1738,326],{"class":182},[176,1740,329],{"class":186},[176,1742,332],{"class":182},[176,1744,335],{"class":204},[176,1746,338],{"class":182},[176,1748,283],{"class":200},[176,1750,343],{"class":182},[176,1752,346],{"class":304},[176,1754,1755],{"class":178,"line":349},[176,1756,194],{"emptyLinePlaceholder":193},[176,1758,1759],{"class":178,"line":502},[176,1760,305],{"class":304},[176,1762,1763],{"class":178,"line":507},[176,1764,1765],{"class":304},"     * index メソッドでエンティティを取得するための Eloquent クエリを構築します。\n",[176,1767,1768],{"class":178,"line":528},[176,1769,1539],{"class":304},[176,1771,1772,1774,1777,1781],{"class":178,"line":1542},[176,1773,1545],{"class":304},[176,1775,1776],{"class":1548},"@param",[176,1778,1780],{"class":1779},"sFweD"," Request",[176,1782,1783],{"class":304}," $request\n",[176,1785,1786,1788,1790,1793],{"class":178,"line":1555},[176,1787,1545],{"class":304},[176,1789,1776],{"class":1548},[176,1791,1792],{"class":1548}," array",[176,1794,1795],{"class":304}," $requestedRelations\n",[176,1797,1798,1800,1802],{"class":178,"line":1560},[176,1799,1545],{"class":304},[176,1801,1549],{"class":1548},[176,1803,1804],{"class":1779}," Builder\n",[176,1806,1807],{"class":178,"line":1575},[176,1808,317],{"class":304},[176,1810,1811,1813,1815,1818,1820,1823,1825,1828,1830,1832,1834,1837,1840],{"class":178,"line":1581},[176,1812,323],{"class":282},[176,1814,685],{"class":282},[176,1816,1817],{"class":655}," buildIndexFetchQuery",[176,1819,709],{"class":182},[176,1821,1822],{"class":204},"Request",[176,1824,326],{"class":182},[176,1826,1827],{"class":186},"request",[176,1829,719],{"class":182},[176,1831,1792],{"class":200},[176,1833,326],{"class":182},[176,1835,1836],{"class":186},"requestedRelations",[176,1838,1839],{"class":182},"):",[176,1841,1804],{"class":204},[176,1843,1844],{"class":178,"line":1597},[176,1845,1578],{"class":182},[176,1847,1848,1851,1854,1856,1859,1861,1863,1866,1868,1870,1872,1874],{"class":178,"line":1603},[176,1849,1850],{"class":182},"        $",[176,1852,1853],{"class":186},"query ",[176,1855,332],{"class":182},[176,1857,1858],{"class":282}," parent",[176,1860,338],{"class":182},[176,1862,1627],{"class":655},[176,1864,1865],{"class":182},"($",[176,1867,1827],{"class":186},[176,1869,719],{"class":182},[176,1871,326],{"class":182},[176,1873,1836],{"class":186},[176,1875,728],{"class":182},[176,1877,1879],{"class":178,"line":1878},25,[176,1880,194],{"emptyLinePlaceholder":193},[176,1882,1884,1886,1889,1892,1895,1897,1899,1902,1904],{"class":178,"line":1883},26,[176,1885,1850],{"class":182},[176,1887,1888],{"class":186},"query",[176,1890,1891],{"class":182},"->",[176,1893,1894],{"class":655},"whereNotNull",[176,1896,709],{"class":182},[176,1898,662],{"class":182},[176,1900,1901],{"class":665},"published_at",[176,1903,662],{"class":182},[176,1905,728],{"class":182},[176,1907,1909],{"class":178,"line":1908},27,[176,1910,194],{"emptyLinePlaceholder":193},[176,1912,1914,1916,1918,1920],{"class":178,"line":1913},28,[176,1915,1585],{"class":1584},[176,1917,326],{"class":182},[176,1919,1888],{"class":186},[176,1921,224],{"class":182},[176,1923,1925],{"class":178,"line":1924},29,[176,1926,1600],{"class":182},[176,1928,1930],{"class":178,"line":1929},30,[176,1931,352],{"class":182},[1616,1933,1934],{"id":1934},"クエリの実行",[156,1936,1937,1938,1396],{},"よくある例として、モデルの一覧を取得する際に特定のカラムのみを選択するケースがあります。その場合は、",[173,1939,1940],{},"runIndexFetchQuery",[166,1942,1944],{"className":168,"code":1943,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * モデルの完全修飾クラス名\n     *\u002F\n    protected $model = Post::class; \u002F\u002F または \"App\\Models\\Post\"\n\n    ...\n\n    \u002F**\n     * index メソッドでエンティティを取得するために、指定されたクエリを実行します。\n     *\n     * @param Request $request\n     * @param Builder $query\n     * @param int $paginationLimit\n     * @return LengthAwarePaginator\n     *\u002F\n    protected function runIndexFetchQuery(Request $request, Builder $query, int $paginationLimit): LengthAwarePaginator\n    {\n        return $query->paginate($paginationLimit, ['id', 'title', 'published_at']);\n    }\n}\n",[173,1945,1946,1952,1956,1976,1980,1996,2016,2020,2030,2034,2038,2042,2046,2066,2070,2074,2078,2082,2087,2091,2101,2113,2125,2134,2138,2176,2180,2228,2232],{"__ignoreMap":171},[176,1947,1948,1950],{"class":178,"line":179},[176,1949,183],{"class":182},[176,1951,187],{"class":186},[176,1953,1954],{"class":178,"line":190},[176,1955,194],{"emptyLinePlaceholder":193},[176,1957,1958,1960,1962,1964,1966,1968,1970,1972,1974],{"class":178,"line":197},[176,1959,201],{"class":200},[176,1961,205],{"class":204},[176,1963,208],{"class":182},[176,1965,211],{"class":204},[176,1967,208],{"class":182},[176,1969,216],{"class":204},[176,1971,208],{"class":182},[176,1973,221],{"class":204},[176,1975,224],{"class":182},[176,1977,1978],{"class":178,"line":227},[176,1979,194],{"emptyLinePlaceholder":193},[176,1981,1982,1984,1986,1988,1990,1992,1994],{"class":178,"line":232},[176,1983,235],{"class":200},[176,1985,205],{"class":186},[176,1987,208],{"class":182},[176,1989,94],{"class":186},[176,1991,208],{"class":182},[176,1993,246],{"class":186},[176,1995,224],{"class":182},[176,1997,1998,2000,2002,2004,2006,2008,2010,2012,2014],{"class":178,"line":251},[176,1999,235],{"class":200},[176,2001,256],{"class":186},[176,2003,208],{"class":182},[176,2005,211],{"class":186},[176,2007,208],{"class":182},[176,2009,216],{"class":186},[176,2011,208],{"class":182},[176,2013,269],{"class":186},[176,2015,224],{"class":182},[176,2017,2018],{"class":178,"line":274},[176,2019,194],{"emptyLinePlaceholder":193},[176,2021,2022,2024,2026,2028],{"class":178,"line":279},[176,2023,283],{"class":282},[176,2025,286],{"class":204},[176,2027,289],{"class":282},[176,2029,292],{"class":204},[176,2031,2032],{"class":178,"line":295},[176,2033,298],{"class":182},[176,2035,2036],{"class":178,"line":301},[176,2037,305],{"class":304},[176,2039,2040],{"class":178,"line":308},[176,2041,311],{"class":304},[176,2043,2044],{"class":178,"line":314},[176,2045,317],{"class":304},[176,2047,2048,2050,2052,2054,2056,2058,2060,2062,2064],{"class":178,"line":320},[176,2049,323],{"class":282},[176,2051,326],{"class":182},[176,2053,329],{"class":186},[176,2055,332],{"class":182},[176,2057,335],{"class":204},[176,2059,338],{"class":182},[176,2061,283],{"class":200},[176,2063,343],{"class":182},[176,2065,346],{"class":304},[176,2067,2068],{"class":178,"line":349},[176,2069,194],{"emptyLinePlaceholder":193},[176,2071,2072],{"class":178,"line":502},[176,2073,696],{"class":182},[176,2075,2076],{"class":178,"line":507},[176,2077,194],{"emptyLinePlaceholder":193},[176,2079,2080],{"class":178,"line":528},[176,2081,305],{"class":304},[176,2083,2084],{"class":178,"line":1542},[176,2085,2086],{"class":304},"     * index メソッドでエンティティを取得するために、指定されたクエリを実行します。\n",[176,2088,2089],{"class":178,"line":1555},[176,2090,1539],{"class":304},[176,2092,2093,2095,2097,2099],{"class":178,"line":1560},[176,2094,1545],{"class":304},[176,2096,1776],{"class":1548},[176,2098,1780],{"class":1779},[176,2100,1783],{"class":304},[176,2102,2103,2105,2107,2110],{"class":178,"line":1575},[176,2104,1545],{"class":304},[176,2106,1776],{"class":1548},[176,2108,2109],{"class":1779}," Builder",[176,2111,2112],{"class":304}," $query\n",[176,2114,2115,2117,2119,2122],{"class":178,"line":1581},[176,2116,1545],{"class":304},[176,2118,1776],{"class":1548},[176,2120,2121],{"class":1548}," int",[176,2123,2124],{"class":304}," $paginationLimit\n",[176,2126,2127,2129,2131],{"class":178,"line":1597},[176,2128,1545],{"class":304},[176,2130,1549],{"class":1548},[176,2132,2133],{"class":1779}," LengthAwarePaginator\n",[176,2135,2136],{"class":178,"line":1603},[176,2137,317],{"class":304},[176,2139,2140,2142,2144,2147,2149,2151,2153,2155,2157,2159,2161,2163,2165,2167,2169,2172,2174],{"class":178,"line":1878},[176,2141,323],{"class":282},[176,2143,685],{"class":282},[176,2145,2146],{"class":655}," runIndexFetchQuery",[176,2148,709],{"class":182},[176,2150,1822],{"class":204},[176,2152,326],{"class":182},[176,2154,1827],{"class":186},[176,2156,719],{"class":182},[176,2158,2109],{"class":204},[176,2160,326],{"class":182},[176,2162,1888],{"class":186},[176,2164,719],{"class":182},[176,2166,2121],{"class":200},[176,2168,326],{"class":182},[176,2170,2171],{"class":186},"paginationLimit",[176,2173,1839],{"class":182},[176,2175,2133],{"class":204},[176,2177,2178],{"class":178,"line":1883},[176,2179,1578],{"class":182},[176,2181,2182,2184,2186,2188,2190,2193,2195,2197,2199,2202,2204,2206,2208,2210,2212,2215,2217,2219,2221,2223,2225],{"class":178,"line":1908},[176,2183,1585],{"class":1584},[176,2185,326],{"class":182},[176,2187,1888],{"class":186},[176,2189,1891],{"class":182},[176,2191,2192],{"class":655},"paginate",[176,2194,1865],{"class":182},[176,2196,2171],{"class":186},[176,2198,719],{"class":182},[176,2200,2201],{"class":182}," [",[176,2203,662],{"class":182},[176,2205,1391],{"class":665},[176,2207,662],{"class":182},[176,2209,719],{"class":182},[176,2211,674],{"class":182},[176,2213,2214],{"class":665},"title",[176,2216,662],{"class":182},[176,2218,719],{"class":182},[176,2220,674],{"class":182},[176,2222,1901],{"class":665},[176,2224,662],{"class":182},[176,2226,2227],{"class":182},"]);\n",[176,2229,2230],{"class":178,"line":1913},[176,2231,1600],{"class":182},[176,2233,2234],{"class":178,"line":1924},[176,2235,352],{"class":182},[1616,2237,2238],{"id":2238},"操作の実行",[156,2240,2241,2243,2244,2247,2248,2243,2251,2254],{},[173,2242,362],{},"や",[173,2245,2246],{},"show","などのエンドポイントの主な目的は、データベースからデータを取得することであり、変更することではありません。一方、",[173,2249,2250],{},"store",[173,2252,2253],{},"update","などのエンドポイントはデータベースに変更を加えます。モデルの保存など、特定の操作の実行方法をカスタマイズすることも可能です。",[156,2256,2257],{},"次の例では、現在認証されているユーザーが管理者である場合に、記事の属性を強制的に設定(force fill)します(ここでのロールの実装は架空のものです)。",[166,2259,2261],{"className":168,"code":2260,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * モデルの完全修飾クラス名\n     *\u002F\n    protected $model = Post::class; \u002F\u002F または \"App\\Models\\Post\"\n\n    ...\n\n    \u002F**\n     * 指定されたエンティティに属性を設定し、データベースに保存します。\n     *\n     * @param Request $request\n     * @param Model $entity\n     * @param array $attributes\n     *\u002F\n    protected function performStore(Request $request, Model $entity, array $attributes): void\n    {\n        if ($this->resolveUser()->hasRole('admin')) {\n            $entity->forceFill($attributes);\n        } else {\n            $entity->fill($attributes);\n        }\n        $entity->save();\n    }\n}\n",[173,2262,2263,2269,2273,2293,2297,2313,2333,2337,2347,2351,2355,2359,2363,2383,2387,2391,2395,2399,2404,2408,2418,2430,2441,2445,2485,2489,2520,2538,2548,2565,2570,2584,2589],{"__ignoreMap":171},[176,2264,2265,2267],{"class":178,"line":179},[176,2266,183],{"class":182},[176,2268,187],{"class":186},[176,2270,2271],{"class":178,"line":190},[176,2272,194],{"emptyLinePlaceholder":193},[176,2274,2275,2277,2279,2281,2283,2285,2287,2289,2291],{"class":178,"line":197},[176,2276,201],{"class":200},[176,2278,205],{"class":204},[176,2280,208],{"class":182},[176,2282,211],{"class":204},[176,2284,208],{"class":182},[176,2286,216],{"class":204},[176,2288,208],{"class":182},[176,2290,221],{"class":204},[176,2292,224],{"class":182},[176,2294,2295],{"class":178,"line":227},[176,2296,194],{"emptyLinePlaceholder":193},[176,2298,2299,2301,2303,2305,2307,2309,2311],{"class":178,"line":232},[176,2300,235],{"class":200},[176,2302,205],{"class":186},[176,2304,208],{"class":182},[176,2306,94],{"class":186},[176,2308,208],{"class":182},[176,2310,246],{"class":186},[176,2312,224],{"class":182},[176,2314,2315,2317,2319,2321,2323,2325,2327,2329,2331],{"class":178,"line":251},[176,2316,235],{"class":200},[176,2318,256],{"class":186},[176,2320,208],{"class":182},[176,2322,211],{"class":186},[176,2324,208],{"class":182},[176,2326,216],{"class":186},[176,2328,208],{"class":182},[176,2330,269],{"class":186},[176,2332,224],{"class":182},[176,2334,2335],{"class":178,"line":274},[176,2336,194],{"emptyLinePlaceholder":193},[176,2338,2339,2341,2343,2345],{"class":178,"line":279},[176,2340,283],{"class":282},[176,2342,286],{"class":204},[176,2344,289],{"class":282},[176,2346,292],{"class":204},[176,2348,2349],{"class":178,"line":295},[176,2350,298],{"class":182},[176,2352,2353],{"class":178,"line":301},[176,2354,305],{"class":304},[176,2356,2357],{"class":178,"line":308},[176,2358,311],{"class":304},[176,2360,2361],{"class":178,"line":314},[176,2362,317],{"class":304},[176,2364,2365,2367,2369,2371,2373,2375,2377,2379,2381],{"class":178,"line":320},[176,2366,323],{"class":282},[176,2368,326],{"class":182},[176,2370,329],{"class":186},[176,2372,332],{"class":182},[176,2374,335],{"class":204},[176,2376,338],{"class":182},[176,2378,283],{"class":200},[176,2380,343],{"class":182},[176,2382,346],{"class":304},[176,2384,2385],{"class":178,"line":349},[176,2386,194],{"emptyLinePlaceholder":193},[176,2388,2389],{"class":178,"line":502},[176,2390,696],{"class":182},[176,2392,2393],{"class":178,"line":507},[176,2394,194],{"emptyLinePlaceholder":193},[176,2396,2397],{"class":178,"line":528},[176,2398,305],{"class":304},[176,2400,2401],{"class":178,"line":1542},[176,2402,2403],{"class":304},"     * 指定されたエンティティに属性を設定し、データベースに保存します。\n",[176,2405,2406],{"class":178,"line":1555},[176,2407,1539],{"class":304},[176,2409,2410,2412,2414,2416],{"class":178,"line":1560},[176,2411,1545],{"class":304},[176,2413,1776],{"class":1548},[176,2415,1780],{"class":1779},[176,2417,1783],{"class":304},[176,2419,2420,2422,2424,2427],{"class":178,"line":1575},[176,2421,1545],{"class":304},[176,2423,1776],{"class":1548},[176,2425,2426],{"class":1779}," Model",[176,2428,2429],{"class":304}," $entity\n",[176,2431,2432,2434,2436,2438],{"class":178,"line":1581},[176,2433,1545],{"class":304},[176,2435,1776],{"class":1548},[176,2437,1792],{"class":1548},[176,2439,2440],{"class":304}," $attributes\n",[176,2442,2443],{"class":178,"line":1597},[176,2444,317],{"class":304},[176,2446,2447,2449,2451,2454,2456,2458,2460,2462,2464,2466,2468,2471,2473,2475,2477,2480,2482],{"class":178,"line":1603},[176,2448,323],{"class":282},[176,2450,685],{"class":282},[176,2452,2453],{"class":655}," performStore",[176,2455,709],{"class":182},[176,2457,1822],{"class":204},[176,2459,326],{"class":182},[176,2461,1827],{"class":186},[176,2463,719],{"class":182},[176,2465,2426],{"class":204},[176,2467,326],{"class":182},[176,2469,2470],{"class":186},"entity",[176,2472,719],{"class":182},[176,2474,1792],{"class":200},[176,2476,326],{"class":182},[176,2478,2479],{"class":186},"attributes",[176,2481,1839],{"class":182},[176,2483,2484],{"class":200}," void\n",[176,2486,2487],{"class":178,"line":1878},[176,2488,1578],{"class":182},[176,2490,2491,2494,2497,2500,2503,2506,2508,2510,2513,2515,2518],{"class":178,"line":1883},[176,2492,2493],{"class":1584},"        if",[176,2495,2496],{"class":182}," ($this->",[176,2498,2499],{"class":655},"resolveUser",[176,2501,2502],{"class":182},"()->",[176,2504,2505],{"class":655},"hasRole",[176,2507,709],{"class":182},[176,2509,662],{"class":182},[176,2511,2512],{"class":665},"admin",[176,2514,662],{"class":182},[176,2516,2517],{"class":182},"))",[176,2519,691],{"class":182},[176,2521,2522,2525,2527,2529,2532,2534,2536],{"class":178,"line":1908},[176,2523,2524],{"class":182},"            $",[176,2526,2470],{"class":186},[176,2528,1891],{"class":182},[176,2530,2531],{"class":655},"forceFill",[176,2533,1865],{"class":182},[176,2535,2479],{"class":186},[176,2537,728],{"class":182},[176,2539,2540,2543,2546],{"class":178,"line":1913},[176,2541,2542],{"class":182},"        }",[176,2544,2545],{"class":1584}," else",[176,2547,691],{"class":182},[176,2549,2550,2552,2554,2556,2559,2561,2563],{"class":178,"line":1924},[176,2551,2524],{"class":182},[176,2553,2470],{"class":186},[176,2555,1891],{"class":182},[176,2557,2558],{"class":655},"fill",[176,2560,1865],{"class":182},[176,2562,2479],{"class":186},[176,2564,728],{"class":182},[176,2566,2567],{"class":178,"line":1929},[176,2568,2569],{"class":182},"        }\n",[176,2571,2573,2575,2577,2579,2582],{"class":178,"line":2572},31,[176,2574,1850],{"class":182},[176,2576,2470],{"class":186},[176,2578,1891],{"class":182},[176,2580,2581],{"class":655},"save",[176,2583,1252],{"class":182},[176,2585,2587],{"class":178,"line":2586},32,[176,2588,1600],{"class":182},[176,2590,2592],{"class":178,"line":2591},33,[176,2593,352],{"class":182},[532,2595,2596],{"icon":534},[156,2597,2598,2601],{},[173,2599,2600],{},"performFill","メソッドをオーバーライドすることで、モデルへの属性の設定方法もカスタマイズできます。",[354,2603,2604],{"id":2604},"エンドポイントのグループの場合",[156,2606,2607,2608,2610,2611,2613,2614,2617],{},"これで",[173,2609,362],{},"エンドポイントは公開済みの記事のみを返すようになりました。しかし、同じ制約を",[173,2612,2246],{},"エンドポイントにも適用したい場合はどうすればよいでしょうか。もちろん、同じ処理を複製して",[173,2615,2616],{},"buildShowFetchQuery","メソッドをオーバーライドすることもできますが、より良い方法があります。",[1616,2619,1618],{"id":2620},"クエリの構築-1",[156,2622,2623,2625,2626,2629,2630,2632,2633,2632,2635,2632,2637,2632,2640,2642],{},[173,2624,1627],{},"メソッドの実装を見ると、内部で",[173,2627,2628],{},"buildFetchQuery","メソッドを使用していることがわかります。実際、このメソッドは",[173,2631,362],{},"、",[173,2634,2246],{},[173,2636,2253],{},[173,2638,2639],{},"destroy",[173,2641,1266],{},"の各エンドポイントがモデル取得用のクエリを構築するために使用しており、これをオーバーライドすることもできます。",[156,2644,2645,2646,2648,2649,2651,2652,2632,2654,2632,2656,2658],{},"同じ制約を",[173,2647,362],{},"と",[173,2650,2246],{},"エンドポイント(さらに",[173,2653,2253],{},[173,2655,2639],{},[173,2657,1266],{},"にも)に一度に適用する場合は、次のようになります。",[166,2660,2662],{"className":168,"code":2661,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * モデルの完全修飾クラス名\n     *\u002F\n    protected $model = Post::class; \u002F\u002F または \"App\\Models\\Post\"\n\n    \u002F**\n     * エンティティを取得するための Eloquent クエリを構築します。\n     *\n     * @param Request $request\n     * @param array $requestedRelations\n     * @return Builder\n     *\u002F\n    protected function buildFetchQuery(Request $request, array $requestedRelations): Builder\n    {\n        $query = parent::buildFetchQuery($request, $requestedRelations);\n\n        $query->whereNotNull('published_at');\n\n        return $query;\n    }\n\n    ...\n}\n",[173,2663,2664,2670,2674,2694,2698,2714,2734,2738,2748,2752,2756,2760,2764,2784,2788,2792,2797,2801,2811,2821,2829,2833,2862,2866,2892,2896,2916,2920,2930,2934,2938,2942],{"__ignoreMap":171},[176,2665,2666,2668],{"class":178,"line":179},[176,2667,183],{"class":182},[176,2669,187],{"class":186},[176,2671,2672],{"class":178,"line":190},[176,2673,194],{"emptyLinePlaceholder":193},[176,2675,2676,2678,2680,2682,2684,2686,2688,2690,2692],{"class":178,"line":197},[176,2677,201],{"class":200},[176,2679,205],{"class":204},[176,2681,208],{"class":182},[176,2683,211],{"class":204},[176,2685,208],{"class":182},[176,2687,216],{"class":204},[176,2689,208],{"class":182},[176,2691,221],{"class":204},[176,2693,224],{"class":182},[176,2695,2696],{"class":178,"line":227},[176,2697,194],{"emptyLinePlaceholder":193},[176,2699,2700,2702,2704,2706,2708,2710,2712],{"class":178,"line":232},[176,2701,235],{"class":200},[176,2703,205],{"class":186},[176,2705,208],{"class":182},[176,2707,94],{"class":186},[176,2709,208],{"class":182},[176,2711,246],{"class":186},[176,2713,224],{"class":182},[176,2715,2716,2718,2720,2722,2724,2726,2728,2730,2732],{"class":178,"line":251},[176,2717,235],{"class":200},[176,2719,256],{"class":186},[176,2721,208],{"class":182},[176,2723,211],{"class":186},[176,2725,208],{"class":182},[176,2727,216],{"class":186},[176,2729,208],{"class":182},[176,2731,269],{"class":186},[176,2733,224],{"class":182},[176,2735,2736],{"class":178,"line":274},[176,2737,194],{"emptyLinePlaceholder":193},[176,2739,2740,2742,2744,2746],{"class":178,"line":279},[176,2741,283],{"class":282},[176,2743,286],{"class":204},[176,2745,289],{"class":282},[176,2747,292],{"class":204},[176,2749,2750],{"class":178,"line":295},[176,2751,298],{"class":182},[176,2753,2754],{"class":178,"line":301},[176,2755,305],{"class":304},[176,2757,2758],{"class":178,"line":308},[176,2759,311],{"class":304},[176,2761,2762],{"class":178,"line":314},[176,2763,317],{"class":304},[176,2765,2766,2768,2770,2772,2774,2776,2778,2780,2782],{"class":178,"line":320},[176,2767,323],{"class":282},[176,2769,326],{"class":182},[176,2771,329],{"class":186},[176,2773,332],{"class":182},[176,2775,335],{"class":204},[176,2777,338],{"class":182},[176,2779,283],{"class":200},[176,2781,343],{"class":182},[176,2783,346],{"class":304},[176,2785,2786],{"class":178,"line":349},[176,2787,194],{"emptyLinePlaceholder":193},[176,2789,2790],{"class":178,"line":502},[176,2791,305],{"class":304},[176,2793,2794],{"class":178,"line":507},[176,2795,2796],{"class":304},"     * エンティティを取得するための Eloquent クエリを構築します。\n",[176,2798,2799],{"class":178,"line":528},[176,2800,1539],{"class":304},[176,2802,2803,2805,2807,2809],{"class":178,"line":1542},[176,2804,1545],{"class":304},[176,2806,1776],{"class":1548},[176,2808,1780],{"class":1779},[176,2810,1783],{"class":304},[176,2812,2813,2815,2817,2819],{"class":178,"line":1555},[176,2814,1545],{"class":304},[176,2816,1776],{"class":1548},[176,2818,1792],{"class":1548},[176,2820,1795],{"class":304},[176,2822,2823,2825,2827],{"class":178,"line":1560},[176,2824,1545],{"class":304},[176,2826,1549],{"class":1548},[176,2828,1804],{"class":1779},[176,2830,2831],{"class":178,"line":1575},[176,2832,317],{"class":304},[176,2834,2835,2837,2839,2842,2844,2846,2848,2850,2852,2854,2856,2858,2860],{"class":178,"line":1581},[176,2836,323],{"class":282},[176,2838,685],{"class":282},[176,2840,2841],{"class":655}," buildFetchQuery",[176,2843,709],{"class":182},[176,2845,1822],{"class":204},[176,2847,326],{"class":182},[176,2849,1827],{"class":186},[176,2851,719],{"class":182},[176,2853,1792],{"class":200},[176,2855,326],{"class":182},[176,2857,1836],{"class":186},[176,2859,1839],{"class":182},[176,2861,1804],{"class":204},[176,2863,2864],{"class":178,"line":1597},[176,2865,1578],{"class":182},[176,2867,2868,2870,2872,2874,2876,2878,2880,2882,2884,2886,2888,2890],{"class":178,"line":1603},[176,2869,1850],{"class":182},[176,2871,1853],{"class":186},[176,2873,332],{"class":182},[176,2875,1858],{"class":282},[176,2877,338],{"class":182},[176,2879,2628],{"class":655},[176,2881,1865],{"class":182},[176,2883,1827],{"class":186},[176,2885,719],{"class":182},[176,2887,326],{"class":182},[176,2889,1836],{"class":186},[176,2891,728],{"class":182},[176,2893,2894],{"class":178,"line":1878},[176,2895,194],{"emptyLinePlaceholder":193},[176,2897,2898,2900,2902,2904,2906,2908,2910,2912,2914],{"class":178,"line":1883},[176,2899,1850],{"class":182},[176,2901,1888],{"class":186},[176,2903,1891],{"class":182},[176,2905,1894],{"class":655},[176,2907,709],{"class":182},[176,2909,662],{"class":182},[176,2911,1901],{"class":665},[176,2913,662],{"class":182},[176,2915,728],{"class":182},[176,2917,2918],{"class":178,"line":1908},[176,2919,194],{"emptyLinePlaceholder":193},[176,2921,2922,2924,2926,2928],{"class":178,"line":1913},[176,2923,1585],{"class":1584},[176,2925,326],{"class":182},[176,2927,1888],{"class":186},[176,2929,224],{"class":182},[176,2931,2932],{"class":178,"line":1924},[176,2933,1600],{"class":182},[176,2935,2936],{"class":178,"line":1929},[176,2937,194],{"emptyLinePlaceholder":193},[176,2939,2940],{"class":178,"line":2572},[176,2941,696],{"class":182},[176,2943,2944],{"class":178,"line":2586},[176,2945,352],{"class":182},[1616,2947,1934],{"id":2948},"クエリの実行-1",[156,2950,2951,2952,2954,2955,2632,2957,2632,2959,2632,2961,2963,2964,2967],{},"クエリの実行に関しては、",[173,2953,362],{},"エンドポイントはやや例外的な存在ですが(単一のモデルではなくモデルの一覧を取得するため)、",[173,2956,2246],{},[173,2958,2253],{},[173,2960,2639],{},[173,2962,1266],{},"の各エンドポイントは同じロジックを共有しており、内部で",[173,2965,2966],{},"runFetchQuery","を使用しています。",[156,2969,2970,2971,2632,2973,2632,2975,2977],{},"少しリファクタリングすると、公開済みのブログ記事のみを取得し、データベースから",[173,2972,1391],{},[173,2974,2214],{},[173,2976,1901],{},"のカラム(属性)のみを取得するコントローラーが完成します。",[166,2979,2981],{"className":168,"code":2980,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * モデルの完全修飾クラス名\n     *\u002F\n    protected $model = Post::class; \u002F\u002F または \"App\\Models\\Post\"\n\n    \u002F**\n     * データベースから取得する属性のリスト\n     *\u002F\n    protected $attributes = ['id', 'title', 'published_at'];\n\n    \u002F**\n     * エンティティを取得するための Eloquent クエリを構築します。\n     *\n     * @param Request $request\n     * @param array $requestedRelations\n     * @return Builder\n     *\u002F\n    protected function buildFetchQuery(Request $request, array $requestedRelations): Builder\n    {\n        $query = parent::buildFetchQuery($request, $requestedRelations);\n\n        $query->whereNotNull('published_at');\n\n        return $query;\n    }\n\n    \u002F**\n     * エンティティを取得するために、指定されたクエリを実行します。\n     *\n     * @param Request $request\n     * @param Builder $query\n     * @param int|string $key\n     * @return Model\n     *\u002F\n    protected function runFetchQuery(Request $request, Builder $query, $key): Model\n    {\n        return $query->select($this->attributes)->findOrFail($key);\n    }\n\n    \u002F**\n     * index メソッドでエンティティを取得するために、指定されたクエリを実行します。\n     *\n     * @param Request $request\n     * @param Builder $query\n     * @param int $paginationLimit\n     * @return LengthAwarePaginator\n     *\u002F\n    protected function runIndexFetchQuery(Request $request, Builder $query, int $paginationLimit): LengthAwarePaginator\n    {\n        return $query->paginate($paginationLimit, $this->attributes);\n    }\n\n    \u002F**\n     * 指定されたエンティティに属性を設定し、データベースに保存します。\n     *\n     * @param Request $request\n     * @param Model $post\n     * @param array $attributes\n     *\u002F\n    protected function performStore(Request $request, Model $post, array $attributes): void\n    {\n        if ($this->resolveUser()->hasRole('admin')) {\n            $post->forceFill($attributes);\n        } else {\n            $post->fill($attributes);\n        }\n        $post->save();\n    }\n}\n",[173,2982,2983,2989,2993,3013,3017,3033,3053,3057,3067,3071,3075,3079,3083,3103,3107,3111,3116,3120,3158,3162,3166,3170,3174,3184,3194,3202,3206,3234,3238,3264,3268,3288,3292,3302,3307,3312,3317,3323,3328,3339,3350,3367,3377,3382,3419,3424,3454,3459,3464,3469,3474,3479,3490,3501,3512,3521,3526,3563,3568,3594,3599,3604,3609,3614,3619,3630,3642,3653,3658,3696,3701,3726,3743,3752,3769,3774,3787,3792],{"__ignoreMap":171},[176,2984,2985,2987],{"class":178,"line":179},[176,2986,183],{"class":182},[176,2988,187],{"class":186},[176,2990,2991],{"class":178,"line":190},[176,2992,194],{"emptyLinePlaceholder":193},[176,2994,2995,2997,2999,3001,3003,3005,3007,3009,3011],{"class":178,"line":197},[176,2996,201],{"class":200},[176,2998,205],{"class":204},[176,3000,208],{"class":182},[176,3002,211],{"class":204},[176,3004,208],{"class":182},[176,3006,216],{"class":204},[176,3008,208],{"class":182},[176,3010,221],{"class":204},[176,3012,224],{"class":182},[176,3014,3015],{"class":178,"line":227},[176,3016,194],{"emptyLinePlaceholder":193},[176,3018,3019,3021,3023,3025,3027,3029,3031],{"class":178,"line":232},[176,3020,235],{"class":200},[176,3022,205],{"class":186},[176,3024,208],{"class":182},[176,3026,94],{"class":186},[176,3028,208],{"class":182},[176,3030,246],{"class":186},[176,3032,224],{"class":182},[176,3034,3035,3037,3039,3041,3043,3045,3047,3049,3051],{"class":178,"line":251},[176,3036,235],{"class":200},[176,3038,256],{"class":186},[176,3040,208],{"class":182},[176,3042,211],{"class":186},[176,3044,208],{"class":182},[176,3046,216],{"class":186},[176,3048,208],{"class":182},[176,3050,269],{"class":186},[176,3052,224],{"class":182},[176,3054,3055],{"class":178,"line":274},[176,3056,194],{"emptyLinePlaceholder":193},[176,3058,3059,3061,3063,3065],{"class":178,"line":279},[176,3060,283],{"class":282},[176,3062,286],{"class":204},[176,3064,289],{"class":282},[176,3066,292],{"class":204},[176,3068,3069],{"class":178,"line":295},[176,3070,298],{"class":182},[176,3072,3073],{"class":178,"line":301},[176,3074,305],{"class":304},[176,3076,3077],{"class":178,"line":308},[176,3078,311],{"class":304},[176,3080,3081],{"class":178,"line":314},[176,3082,317],{"class":304},[176,3084,3085,3087,3089,3091,3093,3095,3097,3099,3101],{"class":178,"line":320},[176,3086,323],{"class":282},[176,3088,326],{"class":182},[176,3090,329],{"class":186},[176,3092,332],{"class":182},[176,3094,335],{"class":204},[176,3096,338],{"class":182},[176,3098,283],{"class":200},[176,3100,343],{"class":182},[176,3102,346],{"class":304},[176,3104,3105],{"class":178,"line":349},[176,3106,194],{"emptyLinePlaceholder":193},[176,3108,3109],{"class":178,"line":502},[176,3110,305],{"class":304},[176,3112,3113],{"class":178,"line":507},[176,3114,3115],{"class":304},"     * データベースから取得する属性のリスト\n",[176,3117,3118],{"class":178,"line":528},[176,3119,317],{"class":304},[176,3121,3122,3124,3126,3129,3131,3133,3135,3137,3139,3141,3143,3145,3147,3149,3151,3153,3155],{"class":178,"line":1542},[176,3123,323],{"class":282},[176,3125,326],{"class":182},[176,3127,3128],{"class":186},"attributes ",[176,3130,332],{"class":182},[176,3132,2201],{"class":182},[176,3134,662],{"class":182},[176,3136,1391],{"class":665},[176,3138,662],{"class":182},[176,3140,719],{"class":182},[176,3142,674],{"class":182},[176,3144,2214],{"class":665},[176,3146,662],{"class":182},[176,3148,719],{"class":182},[176,3150,674],{"class":182},[176,3152,1901],{"class":665},[176,3154,662],{"class":182},[176,3156,3157],{"class":182},"];\n",[176,3159,3160],{"class":178,"line":1555},[176,3161,194],{"emptyLinePlaceholder":193},[176,3163,3164],{"class":178,"line":1560},[176,3165,305],{"class":304},[176,3167,3168],{"class":178,"line":1575},[176,3169,2796],{"class":304},[176,3171,3172],{"class":178,"line":1581},[176,3173,1539],{"class":304},[176,3175,3176,3178,3180,3182],{"class":178,"line":1597},[176,3177,1545],{"class":304},[176,3179,1776],{"class":1548},[176,3181,1780],{"class":1779},[176,3183,1783],{"class":304},[176,3185,3186,3188,3190,3192],{"class":178,"line":1603},[176,3187,1545],{"class":304},[176,3189,1776],{"class":1548},[176,3191,1792],{"class":1548},[176,3193,1795],{"class":304},[176,3195,3196,3198,3200],{"class":178,"line":1878},[176,3197,1545],{"class":304},[176,3199,1549],{"class":1548},[176,3201,1804],{"class":1779},[176,3203,3204],{"class":178,"line":1883},[176,3205,317],{"class":304},[176,3207,3208,3210,3212,3214,3216,3218,3220,3222,3224,3226,3228,3230,3232],{"class":178,"line":1908},[176,3209,323],{"class":282},[176,3211,685],{"class":282},[176,3213,2841],{"class":655},[176,3215,709],{"class":182},[176,3217,1822],{"class":204},[176,3219,326],{"class":182},[176,3221,1827],{"class":186},[176,3223,719],{"class":182},[176,3225,1792],{"class":200},[176,3227,326],{"class":182},[176,3229,1836],{"class":186},[176,3231,1839],{"class":182},[176,3233,1804],{"class":204},[176,3235,3236],{"class":178,"line":1913},[176,3237,1578],{"class":182},[176,3239,3240,3242,3244,3246,3248,3250,3252,3254,3256,3258,3260,3262],{"class":178,"line":1924},[176,3241,1850],{"class":182},[176,3243,1853],{"class":186},[176,3245,332],{"class":182},[176,3247,1858],{"class":282},[176,3249,338],{"class":182},[176,3251,2628],{"class":655},[176,3253,1865],{"class":182},[176,3255,1827],{"class":186},[176,3257,719],{"class":182},[176,3259,326],{"class":182},[176,3261,1836],{"class":186},[176,3263,728],{"class":182},[176,3265,3266],{"class":178,"line":1929},[176,3267,194],{"emptyLinePlaceholder":193},[176,3269,3270,3272,3274,3276,3278,3280,3282,3284,3286],{"class":178,"line":2572},[176,3271,1850],{"class":182},[176,3273,1888],{"class":186},[176,3275,1891],{"class":182},[176,3277,1894],{"class":655},[176,3279,709],{"class":182},[176,3281,662],{"class":182},[176,3283,1901],{"class":665},[176,3285,662],{"class":182},[176,3287,728],{"class":182},[176,3289,3290],{"class":178,"line":2586},[176,3291,194],{"emptyLinePlaceholder":193},[176,3293,3294,3296,3298,3300],{"class":178,"line":2591},[176,3295,1585],{"class":1584},[176,3297,326],{"class":182},[176,3299,1888],{"class":186},[176,3301,224],{"class":182},[176,3303,3305],{"class":178,"line":3304},34,[176,3306,1600],{"class":182},[176,3308,3310],{"class":178,"line":3309},35,[176,3311,194],{"emptyLinePlaceholder":193},[176,3313,3315],{"class":178,"line":3314},36,[176,3316,305],{"class":304},[176,3318,3320],{"class":178,"line":3319},37,[176,3321,3322],{"class":304},"     * エンティティを取得するために、指定されたクエリを実行します。\n",[176,3324,3326],{"class":178,"line":3325},38,[176,3327,1539],{"class":304},[176,3329,3331,3333,3335,3337],{"class":178,"line":3330},39,[176,3332,1545],{"class":304},[176,3334,1776],{"class":1548},[176,3336,1780],{"class":1779},[176,3338,1783],{"class":304},[176,3340,3342,3344,3346,3348],{"class":178,"line":3341},40,[176,3343,1545],{"class":304},[176,3345,1776],{"class":1548},[176,3347,2109],{"class":1779},[176,3349,2112],{"class":304},[176,3351,3353,3355,3357,3359,3361,3364],{"class":178,"line":3352},41,[176,3354,1545],{"class":304},[176,3356,1776],{"class":1548},[176,3358,2121],{"class":1548},[176,3360,764],{"class":1584},[176,3362,3363],{"class":1548},"string",[176,3365,3366],{"class":304}," $key\n",[176,3368,3370,3372,3374],{"class":178,"line":3369},42,[176,3371,1545],{"class":304},[176,3373,1549],{"class":1548},[176,3375,3376],{"class":1779}," Model\n",[176,3378,3380],{"class":178,"line":3379},43,[176,3381,317],{"class":304},[176,3383,3385,3387,3389,3392,3394,3396,3398,3400,3402,3404,3406,3408,3410,3412,3415,3417],{"class":178,"line":3384},44,[176,3386,323],{"class":282},[176,3388,685],{"class":282},[176,3390,3391],{"class":655}," runFetchQuery",[176,3393,709],{"class":182},[176,3395,1822],{"class":204},[176,3397,326],{"class":182},[176,3399,1827],{"class":186},[176,3401,719],{"class":182},[176,3403,2109],{"class":204},[176,3405,326],{"class":182},[176,3407,1888],{"class":186},[176,3409,719],{"class":182},[176,3411,326],{"class":182},[176,3413,3414],{"class":186},"key",[176,3416,1839],{"class":182},[176,3418,3376],{"class":204},[176,3420,3422],{"class":178,"line":3421},45,[176,3423,1578],{"class":182},[176,3425,3427,3429,3431,3433,3435,3438,3441,3443,3445,3448,3450,3452],{"class":178,"line":3426},46,[176,3428,1585],{"class":1584},[176,3430,326],{"class":182},[176,3432,1888],{"class":186},[176,3434,1891],{"class":182},[176,3436,3437],{"class":655},"select",[176,3439,3440],{"class":182},"($this->",[176,3442,2479],{"class":186},[176,3444,1247],{"class":182},[176,3446,3447],{"class":655},"findOrFail",[176,3449,1865],{"class":182},[176,3451,3414],{"class":186},[176,3453,728],{"class":182},[176,3455,3457],{"class":178,"line":3456},47,[176,3458,1600],{"class":182},[176,3460,3462],{"class":178,"line":3461},48,[176,3463,194],{"emptyLinePlaceholder":193},[176,3465,3467],{"class":178,"line":3466},49,[176,3468,305],{"class":304},[176,3470,3472],{"class":178,"line":3471},50,[176,3473,2086],{"class":304},[176,3475,3477],{"class":178,"line":3476},51,[176,3478,1539],{"class":304},[176,3480,3482,3484,3486,3488],{"class":178,"line":3481},52,[176,3483,1545],{"class":304},[176,3485,1776],{"class":1548},[176,3487,1780],{"class":1779},[176,3489,1783],{"class":304},[176,3491,3493,3495,3497,3499],{"class":178,"line":3492},53,[176,3494,1545],{"class":304},[176,3496,1776],{"class":1548},[176,3498,2109],{"class":1779},[176,3500,2112],{"class":304},[176,3502,3504,3506,3508,3510],{"class":178,"line":3503},54,[176,3505,1545],{"class":304},[176,3507,1776],{"class":1548},[176,3509,2121],{"class":1548},[176,3511,2124],{"class":304},[176,3513,3515,3517,3519],{"class":178,"line":3514},55,[176,3516,1545],{"class":304},[176,3518,1549],{"class":1548},[176,3520,2133],{"class":1779},[176,3522,3524],{"class":178,"line":3523},56,[176,3525,317],{"class":304},[176,3527,3529,3531,3533,3535,3537,3539,3541,3543,3545,3547,3549,3551,3553,3555,3557,3559,3561],{"class":178,"line":3528},57,[176,3530,323],{"class":282},[176,3532,685],{"class":282},[176,3534,2146],{"class":655},[176,3536,709],{"class":182},[176,3538,1822],{"class":204},[176,3540,326],{"class":182},[176,3542,1827],{"class":186},[176,3544,719],{"class":182},[176,3546,2109],{"class":204},[176,3548,326],{"class":182},[176,3550,1888],{"class":186},[176,3552,719],{"class":182},[176,3554,2121],{"class":200},[176,3556,326],{"class":182},[176,3558,2171],{"class":186},[176,3560,1839],{"class":182},[176,3562,2133],{"class":204},[176,3564,3566],{"class":178,"line":3565},58,[176,3567,1578],{"class":182},[176,3569,3571,3573,3575,3577,3579,3581,3583,3585,3587,3590,3592],{"class":178,"line":3570},59,[176,3572,1585],{"class":1584},[176,3574,326],{"class":182},[176,3576,1888],{"class":186},[176,3578,1891],{"class":182},[176,3580,2192],{"class":655},[176,3582,1865],{"class":182},[176,3584,2171],{"class":186},[176,3586,719],{"class":182},[176,3588,3589],{"class":182}," $this->",[176,3591,2479],{"class":186},[176,3593,728],{"class":182},[176,3595,3597],{"class":178,"line":3596},60,[176,3598,1600],{"class":182},[176,3600,3602],{"class":178,"line":3601},61,[176,3603,194],{"emptyLinePlaceholder":193},[176,3605,3607],{"class":178,"line":3606},62,[176,3608,305],{"class":304},[176,3610,3612],{"class":178,"line":3611},63,[176,3613,2403],{"class":304},[176,3615,3617],{"class":178,"line":3616},64,[176,3618,1539],{"class":304},[176,3620,3622,3624,3626,3628],{"class":178,"line":3621},65,[176,3623,1545],{"class":304},[176,3625,1776],{"class":1548},[176,3627,1780],{"class":1779},[176,3629,1783],{"class":304},[176,3631,3633,3635,3637,3639],{"class":178,"line":3632},66,[176,3634,1545],{"class":304},[176,3636,1776],{"class":1548},[176,3638,2426],{"class":1779},[176,3640,3641],{"class":304}," $post\n",[176,3643,3645,3647,3649,3651],{"class":178,"line":3644},67,[176,3646,1545],{"class":304},[176,3648,1776],{"class":1548},[176,3650,1792],{"class":1548},[176,3652,2440],{"class":304},[176,3654,3656],{"class":178,"line":3655},68,[176,3657,317],{"class":304},[176,3659,3661,3663,3665,3667,3669,3671,3673,3675,3677,3679,3681,3684,3686,3688,3690,3692,3694],{"class":178,"line":3660},69,[176,3662,323],{"class":282},[176,3664,685],{"class":282},[176,3666,2453],{"class":655},[176,3668,709],{"class":182},[176,3670,1822],{"class":204},[176,3672,326],{"class":182},[176,3674,1827],{"class":186},[176,3676,719],{"class":182},[176,3678,2426],{"class":204},[176,3680,326],{"class":182},[176,3682,3683],{"class":186},"post",[176,3685,719],{"class":182},[176,3687,1792],{"class":200},[176,3689,326],{"class":182},[176,3691,2479],{"class":186},[176,3693,1839],{"class":182},[176,3695,2484],{"class":200},[176,3697,3699],{"class":178,"line":3698},70,[176,3700,1578],{"class":182},[176,3702,3704,3706,3708,3710,3712,3714,3716,3718,3720,3722,3724],{"class":178,"line":3703},71,[176,3705,2493],{"class":1584},[176,3707,2496],{"class":182},[176,3709,2499],{"class":655},[176,3711,2502],{"class":182},[176,3713,2505],{"class":655},[176,3715,709],{"class":182},[176,3717,662],{"class":182},[176,3719,2512],{"class":665},[176,3721,662],{"class":182},[176,3723,2517],{"class":182},[176,3725,691],{"class":182},[176,3727,3729,3731,3733,3735,3737,3739,3741],{"class":178,"line":3728},72,[176,3730,2524],{"class":182},[176,3732,3683],{"class":186},[176,3734,1891],{"class":182},[176,3736,2531],{"class":655},[176,3738,1865],{"class":182},[176,3740,2479],{"class":186},[176,3742,728],{"class":182},[176,3744,3746,3748,3750],{"class":178,"line":3745},73,[176,3747,2542],{"class":182},[176,3749,2545],{"class":1584},[176,3751,691],{"class":182},[176,3753,3755,3757,3759,3761,3763,3765,3767],{"class":178,"line":3754},74,[176,3756,2524],{"class":182},[176,3758,3683],{"class":186},[176,3760,1891],{"class":182},[176,3762,2558],{"class":655},[176,3764,1865],{"class":182},[176,3766,2479],{"class":186},[176,3768,728],{"class":182},[176,3770,3772],{"class":178,"line":3771},75,[176,3773,2569],{"class":182},[176,3775,3777,3779,3781,3783,3785],{"class":178,"line":3776},76,[176,3778,1850],{"class":182},[176,3780,3683],{"class":186},[176,3782,1891],{"class":182},[176,3784,2581],{"class":655},[176,3786,1252],{"class":182},[176,3788,3790],{"class":178,"line":3789},77,[176,3791,1600],{"class":182},[176,3793,3795],{"class":178,"line":3794},78,[176,3796,352],{"class":182},[354,3798,3799],{"id":3799},"標準操作メソッド",[3801,3802,3803,3822],"table",{},[3804,3805,3806],"thead",{},[3807,3808,3809,3813,3816,3819],"tr",{},[3810,3811,3812],"th",{},"メソッド",[3810,3814,3815],{},"Build",[3810,3817,3818],{},"Run",[3810,3820,3821],{},"Perform",[3823,3824,3825,3837,3850,3861,3874,3887],"tbody",{},[3807,3826,3827,3830,3832,3834],{},[3828,3829,362],"td",{},[3828,3831,1627],{},[3828,3833,1940],{},[3828,3835,3836],{},"-",[3807,3838,3839,3841,3844,3847],{},[3828,3840,2250],{},[3828,3842,3843],{},"buildStoreFetchQuery",[3828,3845,3846],{},"runStoreFetchQuery",[3828,3848,3849],{},"performStore",[3807,3851,3852,3854,3856,3859],{},[3828,3853,2246],{},[3828,3855,2616],{},[3828,3857,3858],{},"runShowFetchQuery",[3828,3860,3836],{},[3807,3862,3863,3865,3868,3871],{},[3828,3864,2253],{},[3828,3866,3867],{},"buildUpdateFetchQuery",[3828,3869,3870],{},"runUpdateFetchQuery",[3828,3872,3873],{},"performUpdate",[3807,3875,3876,3878,3881,3884],{},[3828,3877,2639],{},[3828,3879,3880],{},"buildDestroyFetchQuery",[3828,3882,3883],{},"runDestroyFetchQuery",[3828,3885,3886],{},"performDestroy",[3807,3888,3889,3891,3894,3897],{},[3828,3890,1266],{},[3828,3892,3893],{},"buildRestoreFetchQuery",[3828,3895,3896],{},"runRestoreFetchQuery",[3828,3898,3899],{},"performRestore",[3901,3902,3903],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .svl4J, html code.shiki .svl4J{--shiki-light:#F76D47;--shiki-light-font-style:italic;--shiki-default:#F78C6C;--shiki-default-font-style:italic;--shiki-dark:#F78C6C;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sFweD, html code.shiki .sFweD{--shiki-light:#E2931D;--shiki-light-font-style:italic;--shiki-default:#FFCB6B;--shiki-default-font-style:italic;--shiki-dark:#FFCB6B;--shiki-dark-font-style:italic}",{"title":171,"searchDepth":179,"depth":190,"links":3905},[3906,3909,3912,3913],{"id":154,"depth":190,"text":154,"children":3907},[3908],{"id":356,"depth":197,"text":356},{"id":562,"depth":190,"text":562,"children":3910},[3911],{"id":1117,"depth":197,"text":1117},{"id":1385,"depth":190,"text":1385},{"id":1608,"depth":190,"text":1608,"children":3914},[3915,3916,3917],{"id":1614,"depth":197,"text":1614},{"id":2604,"depth":197,"text":2604},{"id":3799,"depth":197,"text":3799},"モデルをAPI経由で公開する方法を学びます。","md",null,{},{"title":20,"description":3918},"Pfx42kBhHmccmFKSetHwf8HNjfsLfd3W30HLpf6TvIw",[3925,3927],{"title":16,"path":17,"stem":18,"description":3926,"children":-1},"Orionを使い始めるための最初のステップを解説します。",{"title":24,"path":25,"stem":26,"description":3928,"children":-1},"モデルのリレーションをAPI経由で公開する方法を学びます。",{"id":3930,"title":94,"body":3931,"description":7349,"extension":3919,"links":3920,"meta":7350,"navigation":193,"path":7351,"seo":7352,"stem":7353,"__hash__":7354},"docs_en\u002F1.guide\u002F03.models.md",{"type":149,"value":3932,"toc":7335},[3933,3937,3945,4076,4080,4089,4246,4269,4273,4276,4420,4429,4727,4731,4740,4868,4881,4981,4985,4994,5184,5188,5191,5195,5199,5207,5485,5489,5495,5779,5783,5799,5802,6114,6122,6126,6135,6138,6159,6174,6460,6463,6481,6491,7252,7256,7333],[152,3934,3936],{"id":3935},"setting-up-controller","Setting up Controller",[156,3938,3939,3940,3944],{},"To expose a model through the API, first you need to create a controller for it. As you may have seen in the ",[160,3941,3943],{"href":3942},"\u002Fguide\u002Fgetting-started#simple-crud","Getting Started - Simple CRUD"," section, defining a model controller is pretty straightforward.",[166,3946,3948],{"className":168,"code":3947,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * Fully-qualified model class name\n     *\u002F\n    protected $model = Post::class; \u002F\u002F or \"App\\Models\\Post\"\n}\n",[173,3949,3950,3956,3960,3980,3984,4000,4020,4024,4034,4038,4042,4047,4051,4072],{"__ignoreMap":171},[176,3951,3952,3954],{"class":178,"line":179},[176,3953,183],{"class":182},[176,3955,187],{"class":186},[176,3957,3958],{"class":178,"line":190},[176,3959,194],{"emptyLinePlaceholder":193},[176,3961,3962,3964,3966,3968,3970,3972,3974,3976,3978],{"class":178,"line":197},[176,3963,201],{"class":200},[176,3965,205],{"class":204},[176,3967,208],{"class":182},[176,3969,211],{"class":204},[176,3971,208],{"class":182},[176,3973,216],{"class":204},[176,3975,208],{"class":182},[176,3977,221],{"class":204},[176,3979,224],{"class":182},[176,3981,3982],{"class":178,"line":227},[176,3983,194],{"emptyLinePlaceholder":193},[176,3985,3986,3988,3990,3992,3994,3996,3998],{"class":178,"line":232},[176,3987,235],{"class":200},[176,3989,205],{"class":186},[176,3991,208],{"class":182},[176,3993,94],{"class":186},[176,3995,208],{"class":182},[176,3997,246],{"class":186},[176,3999,224],{"class":182},[176,4001,4002,4004,4006,4008,4010,4012,4014,4016,4018],{"class":178,"line":251},[176,4003,235],{"class":200},[176,4005,256],{"class":186},[176,4007,208],{"class":182},[176,4009,211],{"class":186},[176,4011,208],{"class":182},[176,4013,216],{"class":186},[176,4015,208],{"class":182},[176,4017,269],{"class":186},[176,4019,224],{"class":182},[176,4021,4022],{"class":178,"line":274},[176,4023,194],{"emptyLinePlaceholder":193},[176,4025,4026,4028,4030,4032],{"class":178,"line":279},[176,4027,283],{"class":282},[176,4029,286],{"class":204},[176,4031,289],{"class":282},[176,4033,292],{"class":204},[176,4035,4036],{"class":178,"line":295},[176,4037,298],{"class":182},[176,4039,4040],{"class":178,"line":301},[176,4041,305],{"class":304},[176,4043,4044],{"class":178,"line":308},[176,4045,4046],{"class":304},"     * Fully-qualified model class name\n",[176,4048,4049],{"class":178,"line":314},[176,4050,317],{"class":304},[176,4052,4053,4055,4057,4059,4061,4063,4065,4067,4069],{"class":178,"line":320},[176,4054,323],{"class":282},[176,4056,326],{"class":182},[176,4058,329],{"class":186},[176,4060,332],{"class":182},[176,4062,335],{"class":204},[176,4064,338],{"class":182},[176,4066,283],{"class":200},[176,4068,343],{"class":182},[176,4070,4071],{"class":304}," \u002F\u002F or \"App\\Models\\Post\"\n",[176,4073,4074],{"class":178,"line":349},[176,4075,352],{"class":182},[354,4077,4079],{"id":4078},"disabling-pagination","Disabling Pagination",[156,4081,4082,4083,4085,4086,4088],{},"By default, resources returned by the ",[173,4084,362],{}," endpoint are paginated. To disable the pagination and return all resources, you can use the ",[173,4087,366],{}," trait.",[166,4090,4092],{"className":168,"code":4091,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\nuse Orion\\Concerns\\DisablePagination;\n\nclass PostsController extends Controller\n{\n    use DisablePagination;\n\n    \u002F**\n     * Fully-qualified model class name\n     *\u002F\n    protected $model = Post::class; \u002F\u002F or \"App\\Models\\Post\"\n}\n",[173,4093,4094,4100,4104,4124,4128,4144,4164,4180,4184,4194,4198,4206,4210,4214,4218,4222,4242],{"__ignoreMap":171},[176,4095,4096,4098],{"class":178,"line":179},[176,4097,183],{"class":182},[176,4099,187],{"class":186},[176,4101,4102],{"class":178,"line":190},[176,4103,194],{"emptyLinePlaceholder":193},[176,4105,4106,4108,4110,4112,4114,4116,4118,4120,4122],{"class":178,"line":197},[176,4107,201],{"class":200},[176,4109,205],{"class":204},[176,4111,208],{"class":182},[176,4113,211],{"class":204},[176,4115,208],{"class":182},[176,4117,216],{"class":204},[176,4119,208],{"class":182},[176,4121,221],{"class":204},[176,4123,224],{"class":182},[176,4125,4126],{"class":178,"line":227},[176,4127,194],{"emptyLinePlaceholder":193},[176,4129,4130,4132,4134,4136,4138,4140,4142],{"class":178,"line":232},[176,4131,235],{"class":200},[176,4133,205],{"class":186},[176,4135,208],{"class":182},[176,4137,94],{"class":186},[176,4139,208],{"class":182},[176,4141,246],{"class":186},[176,4143,224],{"class":182},[176,4145,4146,4148,4150,4152,4154,4156,4158,4160,4162],{"class":178,"line":251},[176,4147,235],{"class":200},[176,4149,256],{"class":186},[176,4151,208],{"class":182},[176,4153,211],{"class":186},[176,4155,208],{"class":182},[176,4157,216],{"class":186},[176,4159,208],{"class":182},[176,4161,269],{"class":186},[176,4163,224],{"class":182},[176,4165,4166,4168,4170,4172,4174,4176,4178],{"class":178,"line":274},[176,4167,235],{"class":200},[176,4169,256],{"class":186},[176,4171,208],{"class":182},[176,4173,453],{"class":186},[176,4175,208],{"class":182},[176,4177,366],{"class":186},[176,4179,224],{"class":182},[176,4181,4182],{"class":178,"line":279},[176,4183,194],{"emptyLinePlaceholder":193},[176,4185,4186,4188,4190,4192],{"class":178,"line":295},[176,4187,283],{"class":282},[176,4189,286],{"class":204},[176,4191,289],{"class":282},[176,4193,292],{"class":204},[176,4195,4196],{"class":178,"line":301},[176,4197,298],{"class":182},[176,4199,4200,4202,4204],{"class":178,"line":308},[176,4201,482],{"class":200},[176,4203,485],{"class":186},[176,4205,224],{"class":182},[176,4207,4208],{"class":178,"line":314},[176,4209,194],{"emptyLinePlaceholder":193},[176,4211,4212],{"class":178,"line":320},[176,4213,305],{"class":304},[176,4215,4216],{"class":178,"line":349},[176,4217,4046],{"class":304},[176,4219,4220],{"class":178,"line":502},[176,4221,317],{"class":304},[176,4223,4224,4226,4228,4230,4232,4234,4236,4238,4240],{"class":178,"line":507},[176,4225,323],{"class":282},[176,4227,326],{"class":182},[176,4229,329],{"class":186},[176,4231,332],{"class":182},[176,4233,335],{"class":204},[176,4235,338],{"class":182},[176,4237,283],{"class":200},[176,4239,343],{"class":182},[176,4241,4071],{"class":304},[176,4243,4244],{"class":178,"line":528},[176,4245,352],{"class":182},[532,4247,4248,4251],{"icon":534},[156,4249,4250],{},"Key Takeaways",[539,4252,4253,4258,4263],{},[542,4254,4255,4256],{},"Model controllers always extend ",[173,4257,547],{},[542,4259,4260,4262],{},[173,4261,553],{}," property is set to a fully qualified model class name",[542,4264,4265,4266,4268],{},"Pagination can be disabled for both model and relation resources using the ",[173,4267,366],{}," trait",[152,4270,4272],{"id":4271},"setting-up-routes","Setting up Routes",[156,4274,4275],{},"Once the controller is created, it is time to register routes.",[166,4277,4278],{"className":168,"code":568,"language":170,"meta":171,"style":171},[173,4279,4280,4286,4290,4310,4326,4346,4350,4382,4386,4412,4416],{"__ignoreMap":171},[176,4281,4282,4284],{"class":178,"line":179},[176,4283,183],{"class":182},[176,4285,187],{"class":186},[176,4287,4288],{"class":178,"line":190},[176,4289,194],{"emptyLinePlaceholder":193},[176,4291,4292,4294,4296,4298,4300,4302,4304,4306,4308],{"class":178,"line":197},[176,4293,235],{"class":200},[176,4295,587],{"class":186},[176,4297,208],{"class":182},[176,4299,592],{"class":186},[176,4301,208],{"class":182},[176,4303,597],{"class":186},[176,4305,208],{"class":182},[176,4307,602],{"class":186},[176,4309,224],{"class":182},[176,4311,4312,4314,4316,4318,4320,4322,4324],{"class":178,"line":227},[176,4313,235],{"class":200},[176,4315,256],{"class":186},[176,4317,208],{"class":182},[176,4319,597],{"class":186},[176,4321,208],{"class":182},[176,4323,619],{"class":186},[176,4325,224],{"class":182},[176,4327,4328,4330,4332,4334,4336,4338,4340,4342,4344],{"class":178,"line":232},[176,4329,235],{"class":200},[176,4331,205],{"class":186},[176,4333,208],{"class":182},[176,4335,211],{"class":186},[176,4337,208],{"class":182},[176,4339,216],{"class":186},[176,4341,208],{"class":182},[176,4343,640],{"class":186},[176,4345,224],{"class":182},[176,4347,4348],{"class":178,"line":251},[176,4349,194],{"emptyLinePlaceholder":193},[176,4351,4352,4354,4356,4358,4360,4362,4364,4366,4368,4370,4372,4374,4376,4378,4380],{"class":178,"line":274},[176,4353,602],{"class":204},[176,4355,338],{"class":182},[176,4357,656],{"class":655},[176,4359,659],{"class":182},[176,4361,662],{"class":182},[176,4363,666],{"class":665},[176,4365,662],{"class":182},[176,4367,671],{"class":182},[176,4369,674],{"class":182},[176,4371,677],{"class":665},[176,4373,662],{"class":182},[176,4375,682],{"class":182},[176,4377,685],{"class":282},[176,4379,688],{"class":182},[176,4381,691],{"class":182},[176,4383,4384],{"class":178,"line":279},[176,4385,696],{"class":182},[176,4387,4388,4390,4392,4394,4396,4398,4400,4402,4404,4406,4408,4410],{"class":178,"line":295},[176,4389,701],{"class":204},[176,4391,338],{"class":182},[176,4393,706],{"class":655},[176,4395,709],{"class":182},[176,4397,662],{"class":182},[176,4399,714],{"class":665},[176,4401,662],{"class":182},[176,4403,719],{"class":182},[176,4405,286],{"class":204},[176,4407,338],{"class":182},[176,4409,283],{"class":200},[176,4411,728],{"class":182},[176,4413,4414],{"class":178,"line":301},[176,4415,696],{"class":182},[176,4417,4418],{"class":178,"line":308},[176,4419,737],{"class":182},[156,4421,4422,4423,4425,4426,4428],{},"Essentially, ",[173,4424,742],{}," method is the same as Laravel's default ",[173,4427,746],{}," - it will create multiple routes to handle a variety of actions on the resource.",[166,4430,4431],{"className":750,"code":751,"language":752,"meta":171,"style":171},[173,4432,4433,4437,4465,4469,4473,4503,4529,4555,4589,4621,4649,4675,4701],{"__ignoreMap":171},[176,4434,4435],{"class":178,"line":179},[176,4436,759],{"class":204},[176,4438,4439,4441,4443,4445,4447,4449,4451,4453,4455,4457,4459,4461,4463],{"class":178,"line":190},[176,4440,764],{"class":182},[176,4442,767],{"class":204},[176,4444,770],{"class":182},[176,4446,773],{"class":204},[176,4448,776],{"class":182},[176,4450,779],{"class":204},[176,4452,782],{"class":182},[176,4454,785],{"class":204},[176,4456,788],{"class":182},[176,4458,791],{"class":204},[176,4460,794],{"class":182},[176,4462,797],{"class":204},[176,4464,800],{"class":182},[176,4466,4467],{"class":178,"line":197},[176,4468,759],{"class":204},[176,4470,4471],{"class":178,"line":227},[176,4472,809],{"class":655},[176,4474,4475,4477,4479,4481,4483,4485,4487,4489,4491,4493,4495,4497,4499,4501],{"class":178,"line":232},[176,4476,764],{"class":182},[176,4478,816],{"class":182},[176,4480,819],{"class":204},[176,4482,764],{"class":182},[176,4484,824],{"class":204},[176,4486,827],{"class":182},[176,4488,830],{"class":204},[176,4490,833],{"class":182},[176,4492,836],{"class":204},[176,4494,839],{"class":182},[176,4496,842],{"class":204},[176,4498,845],{"class":182},[176,4500,848],{"class":204},[176,4502,851],{"class":182},[176,4504,4505,4507,4509,4511,4513,4515,4517,4519,4521,4523,4525,4527],{"class":178,"line":251},[176,4506,764],{"class":182},[176,4508,816],{"class":182},[176,4510,860],{"class":204},[176,4512,863],{"class":182},[176,4514,866],{"class":204},[176,4516,869],{"class":182},[176,4518,872],{"class":204},[176,4520,875],{"class":182},[176,4522,842],{"class":204},[176,4524,845],{"class":182},[176,4526,848],{"class":204},[176,4528,851],{"class":182},[176,4530,4531,4533,4535,4537,4539,4541,4543,4545,4547,4549,4551,4553],{"class":178,"line":274},[176,4532,764],{"class":182},[176,4534,816],{"class":182},[176,4536,860],{"class":204},[176,4538,863],{"class":182},[176,4540,830],{"class":204},[176,4542,833],{"class":182},[176,4544,900],{"class":204},[176,4546,839],{"class":182},[176,4548,905],{"class":204},[176,4550,845],{"class":182},[176,4552,848],{"class":204},[176,4554,851],{"class":182},[176,4556,4557,4559,4561,4563,4565,4567,4569,4571,4573,4575,4577,4579,4581,4583,4585,4587],{"class":178,"line":279},[176,4558,764],{"class":182},[176,4560,816],{"class":182},[176,4562,819],{"class":204},[176,4564,764],{"class":182},[176,4566,824],{"class":204},[176,4568,827],{"class":182},[176,4570,928],{"class":204},[176,4572,931],{"class":665},[176,4574,869],{"class":182},[176,4576,936],{"class":204},[176,4578,939],{"class":182},[176,4580,942],{"class":204},[176,4582,945],{"class":182},[176,4584,848],{"class":204},[176,4586,782],{"class":182},[176,4588,952],{"class":186},[176,4590,4591,4593,4595,4597,4599,4601,4603,4605,4607,4609,4611,4613,4615,4617,4619],{"class":178,"line":295},[176,4592,764],{"class":182},[176,4594,816],{"class":182},[176,4596,961],{"class":204},[176,4598,764],{"class":182},[176,4600,966],{"class":204},[176,4602,770],{"class":182},[176,4604,928],{"class":204},[176,4606,931],{"class":665},[176,4608,869],{"class":182},[176,4610,977],{"class":204},[176,4612,875],{"class":182},[176,4614,982],{"class":204},[176,4616,985],{"class":182},[176,4618,848],{"class":204},[176,4620,851],{"class":182},[176,4622,4623,4625,4627,4629,4631,4633,4635,4637,4639,4641,4643,4645,4647],{"class":178,"line":301},[176,4624,764],{"class":182},[176,4626,816],{"class":182},[176,4628,998],{"class":204},[176,4630,776],{"class":182},[176,4632,928],{"class":204},[176,4634,931],{"class":665},[176,4636,869],{"class":182},[176,4638,1009],{"class":204},[176,4640,1012],{"class":182},[176,4642,1015],{"class":204},[176,4644,1018],{"class":182},[176,4646,848],{"class":204},[176,4648,851],{"class":182},[176,4650,4651,4653,4655,4657,4659,4661,4663,4665,4667,4669,4671,4673],{"class":178,"line":308},[176,4652,764],{"class":182},[176,4654,816],{"class":182},[176,4656,860],{"class":204},[176,4658,863],{"class":182},[176,4660,1035],{"class":204},[176,4662,1038],{"class":182},[176,4664,1041],{"class":204},[176,4666,1044],{"class":182},[176,4668,1047],{"class":204},[176,4670,875],{"class":182},[176,4672,848],{"class":204},[176,4674,851],{"class":182},[176,4676,4677,4679,4681,4683,4685,4687,4689,4691,4693,4695,4697,4699],{"class":178,"line":314},[176,4678,764],{"class":182},[176,4680,816],{"class":182},[176,4682,1062],{"class":204},[176,4684,1065],{"class":182},[176,4686,1035],{"class":204},[176,4688,1038],{"class":182},[176,4690,1072],{"class":204},[176,4692,1075],{"class":182},[176,4694,1078],{"class":204},[176,4696,1012],{"class":182},[176,4698,848],{"class":204},[176,4700,851],{"class":182},[176,4702,4703,4705,4707,4709,4711,4713,4715,4717,4719,4721,4723,4725],{"class":178,"line":320},[176,4704,764],{"class":182},[176,4706,816],{"class":182},[176,4708,998],{"class":204},[176,4710,776],{"class":182},[176,4712,1035],{"class":204},[176,4714,1038],{"class":182},[176,4716,1101],{"class":204},[176,4718,1104],{"class":182},[176,4720,1107],{"class":204},[176,4722,1110],{"class":182},[176,4724,848],{"class":204},[176,4726,851],{"class":182},[354,4728,4730],{"id":4729},"soft-deletes","Soft Deletes",[156,4732,4733,4734,4736,4737,4739],{},"If your model uses the ",[173,4735,1123],{}," trait and you would like to expose the same functionality via the API, call the ",[173,4738,1127],{}," method upon resource registration.",[166,4741,4742],{"className":168,"code":1131,"language":170,"meta":171,"style":171},[173,4743,4744,4750,4754,4774,4790,4794,4826,4830,4860,4864],{"__ignoreMap":171},[176,4745,4746,4748],{"class":178,"line":179},[176,4747,183],{"class":182},[176,4749,187],{"class":186},[176,4751,4752],{"class":178,"line":190},[176,4753,194],{"emptyLinePlaceholder":193},[176,4755,4756,4758,4760,4762,4764,4766,4768,4770,4772],{"class":178,"line":197},[176,4757,235],{"class":200},[176,4759,587],{"class":186},[176,4761,208],{"class":182},[176,4763,592],{"class":186},[176,4765,208],{"class":182},[176,4767,597],{"class":186},[176,4769,208],{"class":182},[176,4771,602],{"class":186},[176,4773,224],{"class":182},[176,4775,4776,4778,4780,4782,4784,4786,4788],{"class":178,"line":227},[176,4777,235],{"class":200},[176,4779,256],{"class":186},[176,4781,208],{"class":182},[176,4783,597],{"class":186},[176,4785,208],{"class":182},[176,4787,619],{"class":186},[176,4789,224],{"class":182},[176,4791,4792],{"class":178,"line":232},[176,4793,194],{"emptyLinePlaceholder":193},[176,4795,4796,4798,4800,4802,4804,4806,4808,4810,4812,4814,4816,4818,4820,4822,4824],{"class":178,"line":251},[176,4797,602],{"class":204},[176,4799,338],{"class":182},[176,4801,656],{"class":655},[176,4803,659],{"class":182},[176,4805,662],{"class":182},[176,4807,666],{"class":665},[176,4809,662],{"class":182},[176,4811,671],{"class":182},[176,4813,674],{"class":182},[176,4815,677],{"class":665},[176,4817,662],{"class":182},[176,4819,682],{"class":182},[176,4821,685],{"class":282},[176,4823,688],{"class":182},[176,4825,691],{"class":182},[176,4827,4828],{"class":178,"line":274},[176,4829,696],{"class":182},[176,4831,4832,4834,4836,4838,4840,4842,4844,4846,4848,4850,4852,4854,4856,4858],{"class":178,"line":279},[176,4833,701],{"class":204},[176,4835,338],{"class":182},[176,4837,706],{"class":655},[176,4839,709],{"class":182},[176,4841,662],{"class":182},[176,4843,714],{"class":665},[176,4845,662],{"class":182},[176,4847,719],{"class":182},[176,4849,674],{"class":182},[176,4851,1242],{"class":665},[176,4853,662],{"class":182},[176,4855,1247],{"class":182},[176,4857,1127],{"class":655},[176,4859,1252],{"class":182},[176,4861,4862],{"class":178,"line":295},[176,4863,696],{"class":182},[176,4865,4866],{"class":178,"line":301},[176,4867,737],{"class":182},[156,4869,4870,4871,4873,4874,4876,4877,4880],{},"This will introduce ",[173,4872,1266],{}," and ",[173,4875,1270],{}," endpoints. To learn how to permanently delete a resource via API (force delete), take a look at the related ",[160,4878,114],{"href":4879},"\u002Fguide\u002Fquery-parameters#soft-deletes"," section.",[166,4882,4883],{"className":750,"code":1278,"language":752,"meta":171,"style":171},[173,4884,4885,4889,4917,4921,4925,4955],{"__ignoreMap":171},[176,4886,4887],{"class":178,"line":179},[176,4888,759],{"class":204},[176,4890,4891,4893,4895,4897,4899,4901,4903,4905,4907,4909,4911,4913,4915],{"class":178,"line":190},[176,4892,764],{"class":182},[176,4894,767],{"class":204},[176,4896,770],{"class":182},[176,4898,773],{"class":204},[176,4900,776],{"class":182},[176,4902,779],{"class":204},[176,4904,782],{"class":182},[176,4906,785],{"class":204},[176,4908,788],{"class":182},[176,4910,791],{"class":204},[176,4912,794],{"class":182},[176,4914,797],{"class":204},[176,4916,800],{"class":182},[176,4918,4919],{"class":178,"line":197},[176,4920,759],{"class":204},[176,4922,4923],{"class":178,"line":227},[176,4924,809],{"class":655},[176,4926,4927,4929,4931,4933,4935,4937,4939,4941,4943,4945,4947,4949,4951,4953],{"class":178,"line":232},[176,4928,764],{"class":182},[176,4930,816],{"class":182},[176,4932,860],{"class":204},[176,4934,863],{"class":182},[176,4936,928],{"class":204},[176,4938,931],{"class":665},[176,4940,1337],{"class":204},[176,4942,839],{"class":182},[176,4944,1342],{"class":204},[176,4946,1012],{"class":182},[176,4948,1347],{"class":204},[176,4950,1018],{"class":182},[176,4952,848],{"class":204},[176,4954,851],{"class":182},[176,4956,4957,4959,4961,4963,4965,4967,4969,4971,4973,4975,4977,4979],{"class":178,"line":251},[176,4958,764],{"class":182},[176,4960,816],{"class":182},[176,4962,860],{"class":204},[176,4964,863],{"class":182},[176,4966,1366],{"class":204},[176,4968,939],{"class":182},[176,4970,1371],{"class":204},[176,4972,1104],{"class":182},[176,4974,1376],{"class":204},[176,4976,1110],{"class":182},[176,4978,848],{"class":204},[176,4980,851],{"class":182},[152,4982,4984],{"id":4983},"customizing-keys","Customizing Keys",[156,4986,4987,4988,4990,4991,4993],{},"By default, endpoints use primary key (usually ",[173,4989,1391],{},") to retrieve models from the database. However, in some cases you would want to use a different field to fetch the models while maintaining the primary key as it is. To do that, override the ",[173,4992,1395],{}," method on the controller:",[166,4995,4997],{"className":168,"code":4996,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * Fully-qualified model class name\n     *\u002F\n    protected $model = Post::class; \u002F\u002F or \"App\\Models\\Post\"\n\n    \u002F**\n     * The name of the field used to fetch a resource from the database.\n     *\n     * @return string\n     *\u002F\n    protected function keyName(): string\n    {\n        return 'slug';\n    }\n}\n",[173,4998,4999,5005,5009,5029,5033,5049,5069,5073,5083,5087,5091,5095,5099,5119,5123,5127,5132,5136,5144,5148,5160,5164,5176,5180],{"__ignoreMap":171},[176,5000,5001,5003],{"class":178,"line":179},[176,5002,183],{"class":182},[176,5004,187],{"class":186},[176,5006,5007],{"class":178,"line":190},[176,5008,194],{"emptyLinePlaceholder":193},[176,5010,5011,5013,5015,5017,5019,5021,5023,5025,5027],{"class":178,"line":197},[176,5012,201],{"class":200},[176,5014,205],{"class":204},[176,5016,208],{"class":182},[176,5018,211],{"class":204},[176,5020,208],{"class":182},[176,5022,216],{"class":204},[176,5024,208],{"class":182},[176,5026,221],{"class":204},[176,5028,224],{"class":182},[176,5030,5031],{"class":178,"line":227},[176,5032,194],{"emptyLinePlaceholder":193},[176,5034,5035,5037,5039,5041,5043,5045,5047],{"class":178,"line":232},[176,5036,235],{"class":200},[176,5038,205],{"class":186},[176,5040,208],{"class":182},[176,5042,94],{"class":186},[176,5044,208],{"class":182},[176,5046,246],{"class":186},[176,5048,224],{"class":182},[176,5050,5051,5053,5055,5057,5059,5061,5063,5065,5067],{"class":178,"line":251},[176,5052,235],{"class":200},[176,5054,256],{"class":186},[176,5056,208],{"class":182},[176,5058,211],{"class":186},[176,5060,208],{"class":182},[176,5062,216],{"class":186},[176,5064,208],{"class":182},[176,5066,269],{"class":186},[176,5068,224],{"class":182},[176,5070,5071],{"class":178,"line":274},[176,5072,194],{"emptyLinePlaceholder":193},[176,5074,5075,5077,5079,5081],{"class":178,"line":279},[176,5076,283],{"class":282},[176,5078,286],{"class":204},[176,5080,289],{"class":282},[176,5082,292],{"class":204},[176,5084,5085],{"class":178,"line":295},[176,5086,298],{"class":182},[176,5088,5089],{"class":178,"line":301},[176,5090,305],{"class":304},[176,5092,5093],{"class":178,"line":308},[176,5094,4046],{"class":304},[176,5096,5097],{"class":178,"line":314},[176,5098,317],{"class":304},[176,5100,5101,5103,5105,5107,5109,5111,5113,5115,5117],{"class":178,"line":320},[176,5102,323],{"class":282},[176,5104,326],{"class":182},[176,5106,329],{"class":186},[176,5108,332],{"class":182},[176,5110,335],{"class":204},[176,5112,338],{"class":182},[176,5114,283],{"class":200},[176,5116,343],{"class":182},[176,5118,4071],{"class":304},[176,5120,5121],{"class":178,"line":349},[176,5122,194],{"emptyLinePlaceholder":193},[176,5124,5125],{"class":178,"line":502},[176,5126,305],{"class":304},[176,5128,5129],{"class":178,"line":507},[176,5130,5131],{"class":304},"     * The name of the field used to fetch a resource from the database.\n",[176,5133,5134],{"class":178,"line":528},[176,5135,1539],{"class":304},[176,5137,5138,5140,5142],{"class":178,"line":1542},[176,5139,1545],{"class":304},[176,5141,1549],{"class":1548},[176,5143,1552],{"class":1548},[176,5145,5146],{"class":178,"line":1555},[176,5147,317],{"class":304},[176,5149,5150,5152,5154,5156,5158],{"class":178,"line":1560},[176,5151,323],{"class":282},[176,5153,685],{"class":282},[176,5155,1567],{"class":655},[176,5157,1570],{"class":182},[176,5159,1552],{"class":200},[176,5161,5162],{"class":178,"line":1575},[176,5163,1578],{"class":182},[176,5165,5166,5168,5170,5172,5174],{"class":178,"line":1581},[176,5167,1585],{"class":1584},[176,5169,674],{"class":182},[176,5171,1590],{"class":665},[176,5173,662],{"class":182},[176,5175,224],{"class":182},[176,5177,5178],{"class":178,"line":1597},[176,5179,1600],{"class":182},[176,5181,5182],{"class":178,"line":1603},[176,5183,352],{"class":182},[152,5185,5187],{"id":5186},"customizing-queries","Customizing Queries",[156,5189,5190],{},"Orion is quite flexible and allows you to redefine how Eloquent queries are built and run for each endpoint.",[354,5192,5194],{"id":5193},"for-individual-endpoints","For Individual Endpoints",[1616,5196,5198],{"id":5197},"building-queries","Building queries",[156,5200,5201,5202,5204,5205,4993],{},"Let's say you would like the ",[173,5203,362],{}," endpoint to return only published blog posts. To do so, override the ",[173,5206,1627],{},[166,5208,5210],{"className":168,"code":5209,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * Fully-qualified model class name\n     *\u002F\n    protected $model = Post::class; \u002F\u002F or \"App\\Models\\Post\"\n\n    \u002F**\n     * Builds Eloquent query for fetching entities in index method.\n     *\n     * @param Request $request\n     * @param array $requestedRelations\n     * @return Builder\n     *\u002F\n    protected function buildIndexFetchQuery(Request $request, array $requestedRelations): Builder\n    {\n        $query = parent::buildIndexFetchQuery($request, $requestedRelations);\n\n        $query->whereNotNull('published_at');\n\n        return $query;\n    }\n}\n",[173,5211,5212,5218,5222,5242,5246,5262,5282,5286,5296,5300,5304,5308,5312,5332,5336,5340,5345,5349,5359,5369,5377,5381,5409,5413,5439,5443,5463,5467,5477,5481],{"__ignoreMap":171},[176,5213,5214,5216],{"class":178,"line":179},[176,5215,183],{"class":182},[176,5217,187],{"class":186},[176,5219,5220],{"class":178,"line":190},[176,5221,194],{"emptyLinePlaceholder":193},[176,5223,5224,5226,5228,5230,5232,5234,5236,5238,5240],{"class":178,"line":197},[176,5225,201],{"class":200},[176,5227,205],{"class":204},[176,5229,208],{"class":182},[176,5231,211],{"class":204},[176,5233,208],{"class":182},[176,5235,216],{"class":204},[176,5237,208],{"class":182},[176,5239,221],{"class":204},[176,5241,224],{"class":182},[176,5243,5244],{"class":178,"line":227},[176,5245,194],{"emptyLinePlaceholder":193},[176,5247,5248,5250,5252,5254,5256,5258,5260],{"class":178,"line":232},[176,5249,235],{"class":200},[176,5251,205],{"class":186},[176,5253,208],{"class":182},[176,5255,94],{"class":186},[176,5257,208],{"class":182},[176,5259,246],{"class":186},[176,5261,224],{"class":182},[176,5263,5264,5266,5268,5270,5272,5274,5276,5278,5280],{"class":178,"line":251},[176,5265,235],{"class":200},[176,5267,256],{"class":186},[176,5269,208],{"class":182},[176,5271,211],{"class":186},[176,5273,208],{"class":182},[176,5275,216],{"class":186},[176,5277,208],{"class":182},[176,5279,269],{"class":186},[176,5281,224],{"class":182},[176,5283,5284],{"class":178,"line":274},[176,5285,194],{"emptyLinePlaceholder":193},[176,5287,5288,5290,5292,5294],{"class":178,"line":279},[176,5289,283],{"class":282},[176,5291,286],{"class":204},[176,5293,289],{"class":282},[176,5295,292],{"class":204},[176,5297,5298],{"class":178,"line":295},[176,5299,298],{"class":182},[176,5301,5302],{"class":178,"line":301},[176,5303,305],{"class":304},[176,5305,5306],{"class":178,"line":308},[176,5307,4046],{"class":304},[176,5309,5310],{"class":178,"line":314},[176,5311,317],{"class":304},[176,5313,5314,5316,5318,5320,5322,5324,5326,5328,5330],{"class":178,"line":320},[176,5315,323],{"class":282},[176,5317,326],{"class":182},[176,5319,329],{"class":186},[176,5321,332],{"class":182},[176,5323,335],{"class":204},[176,5325,338],{"class":182},[176,5327,283],{"class":200},[176,5329,343],{"class":182},[176,5331,4071],{"class":304},[176,5333,5334],{"class":178,"line":349},[176,5335,194],{"emptyLinePlaceholder":193},[176,5337,5338],{"class":178,"line":502},[176,5339,305],{"class":304},[176,5341,5342],{"class":178,"line":507},[176,5343,5344],{"class":304},"     * Builds Eloquent query for fetching entities in index method.\n",[176,5346,5347],{"class":178,"line":528},[176,5348,1539],{"class":304},[176,5350,5351,5353,5355,5357],{"class":178,"line":1542},[176,5352,1545],{"class":304},[176,5354,1776],{"class":1548},[176,5356,1780],{"class":1779},[176,5358,1783],{"class":304},[176,5360,5361,5363,5365,5367],{"class":178,"line":1555},[176,5362,1545],{"class":304},[176,5364,1776],{"class":1548},[176,5366,1792],{"class":1548},[176,5368,1795],{"class":304},[176,5370,5371,5373,5375],{"class":178,"line":1560},[176,5372,1545],{"class":304},[176,5374,1549],{"class":1548},[176,5376,1804],{"class":1779},[176,5378,5379],{"class":178,"line":1575},[176,5380,317],{"class":304},[176,5382,5383,5385,5387,5389,5391,5393,5395,5397,5399,5401,5403,5405,5407],{"class":178,"line":1581},[176,5384,323],{"class":282},[176,5386,685],{"class":282},[176,5388,1817],{"class":655},[176,5390,709],{"class":182},[176,5392,1822],{"class":204},[176,5394,326],{"class":182},[176,5396,1827],{"class":186},[176,5398,719],{"class":182},[176,5400,1792],{"class":200},[176,5402,326],{"class":182},[176,5404,1836],{"class":186},[176,5406,1839],{"class":182},[176,5408,1804],{"class":204},[176,5410,5411],{"class":178,"line":1597},[176,5412,1578],{"class":182},[176,5414,5415,5417,5419,5421,5423,5425,5427,5429,5431,5433,5435,5437],{"class":178,"line":1603},[176,5416,1850],{"class":182},[176,5418,1853],{"class":186},[176,5420,332],{"class":182},[176,5422,1858],{"class":282},[176,5424,338],{"class":182},[176,5426,1627],{"class":655},[176,5428,1865],{"class":182},[176,5430,1827],{"class":186},[176,5432,719],{"class":182},[176,5434,326],{"class":182},[176,5436,1836],{"class":186},[176,5438,728],{"class":182},[176,5440,5441],{"class":178,"line":1878},[176,5442,194],{"emptyLinePlaceholder":193},[176,5444,5445,5447,5449,5451,5453,5455,5457,5459,5461],{"class":178,"line":1883},[176,5446,1850],{"class":182},[176,5448,1888],{"class":186},[176,5450,1891],{"class":182},[176,5452,1894],{"class":655},[176,5454,709],{"class":182},[176,5456,662],{"class":182},[176,5458,1901],{"class":665},[176,5460,662],{"class":182},[176,5462,728],{"class":182},[176,5464,5465],{"class":178,"line":1908},[176,5466,194],{"emptyLinePlaceholder":193},[176,5468,5469,5471,5473,5475],{"class":178,"line":1913},[176,5470,1585],{"class":1584},[176,5472,326],{"class":182},[176,5474,1888],{"class":186},[176,5476,224],{"class":182},[176,5478,5479],{"class":178,"line":1924},[176,5480,1600],{"class":182},[176,5482,5483],{"class":178,"line":1929},[176,5484,352],{"class":182},[1616,5486,5488],{"id":5487},"running-queries","Running queries",[156,5490,5491,5492,5494],{},"A common example is selecting only specific columns when fetching a list of models. To do so, override the ",[173,5493,1940],{}," method:",[166,5496,5498],{"className":168,"code":5497,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * Fully-qualified model class name\n     *\u002F\n    protected $model = Post::class; \u002F\u002F or \"App\\Models\\Post\"\n\n    ...\n\n    \u002F**\n     * Runs the given query for fetching entities in index method.\n     *\n     * @param Request $request\n     * @param Builder $query\n     * @param int $paginationLimit\n     * @return LengthAwarePaginator\n     *\u002F\n    protected function runIndexFetchQuery(Request $request, Builder $query, int $paginationLimit): LengthAwarePaginator\n    {\n        return $query->paginate($paginationLimit, ['id', 'title', 'published_at']);\n    }\n}\n",[173,5499,5500,5506,5510,5530,5534,5550,5570,5574,5584,5588,5592,5596,5600,5620,5624,5628,5632,5636,5641,5645,5655,5665,5675,5683,5687,5723,5727,5771,5775],{"__ignoreMap":171},[176,5501,5502,5504],{"class":178,"line":179},[176,5503,183],{"class":182},[176,5505,187],{"class":186},[176,5507,5508],{"class":178,"line":190},[176,5509,194],{"emptyLinePlaceholder":193},[176,5511,5512,5514,5516,5518,5520,5522,5524,5526,5528],{"class":178,"line":197},[176,5513,201],{"class":200},[176,5515,205],{"class":204},[176,5517,208],{"class":182},[176,5519,211],{"class":204},[176,5521,208],{"class":182},[176,5523,216],{"class":204},[176,5525,208],{"class":182},[176,5527,221],{"class":204},[176,5529,224],{"class":182},[176,5531,5532],{"class":178,"line":227},[176,5533,194],{"emptyLinePlaceholder":193},[176,5535,5536,5538,5540,5542,5544,5546,5548],{"class":178,"line":232},[176,5537,235],{"class":200},[176,5539,205],{"class":186},[176,5541,208],{"class":182},[176,5543,94],{"class":186},[176,5545,208],{"class":182},[176,5547,246],{"class":186},[176,5549,224],{"class":182},[176,5551,5552,5554,5556,5558,5560,5562,5564,5566,5568],{"class":178,"line":251},[176,5553,235],{"class":200},[176,5555,256],{"class":186},[176,5557,208],{"class":182},[176,5559,211],{"class":186},[176,5561,208],{"class":182},[176,5563,216],{"class":186},[176,5565,208],{"class":182},[176,5567,269],{"class":186},[176,5569,224],{"class":182},[176,5571,5572],{"class":178,"line":274},[176,5573,194],{"emptyLinePlaceholder":193},[176,5575,5576,5578,5580,5582],{"class":178,"line":279},[176,5577,283],{"class":282},[176,5579,286],{"class":204},[176,5581,289],{"class":282},[176,5583,292],{"class":204},[176,5585,5586],{"class":178,"line":295},[176,5587,298],{"class":182},[176,5589,5590],{"class":178,"line":301},[176,5591,305],{"class":304},[176,5593,5594],{"class":178,"line":308},[176,5595,4046],{"class":304},[176,5597,5598],{"class":178,"line":314},[176,5599,317],{"class":304},[176,5601,5602,5604,5606,5608,5610,5612,5614,5616,5618],{"class":178,"line":320},[176,5603,323],{"class":282},[176,5605,326],{"class":182},[176,5607,329],{"class":186},[176,5609,332],{"class":182},[176,5611,335],{"class":204},[176,5613,338],{"class":182},[176,5615,283],{"class":200},[176,5617,343],{"class":182},[176,5619,4071],{"class":304},[176,5621,5622],{"class":178,"line":349},[176,5623,194],{"emptyLinePlaceholder":193},[176,5625,5626],{"class":178,"line":502},[176,5627,696],{"class":182},[176,5629,5630],{"class":178,"line":507},[176,5631,194],{"emptyLinePlaceholder":193},[176,5633,5634],{"class":178,"line":528},[176,5635,305],{"class":304},[176,5637,5638],{"class":178,"line":1542},[176,5639,5640],{"class":304},"     * Runs the given query for fetching entities in index method.\n",[176,5642,5643],{"class":178,"line":1555},[176,5644,1539],{"class":304},[176,5646,5647,5649,5651,5653],{"class":178,"line":1560},[176,5648,1545],{"class":304},[176,5650,1776],{"class":1548},[176,5652,1780],{"class":1779},[176,5654,1783],{"class":304},[176,5656,5657,5659,5661,5663],{"class":178,"line":1575},[176,5658,1545],{"class":304},[176,5660,1776],{"class":1548},[176,5662,2109],{"class":1779},[176,5664,2112],{"class":304},[176,5666,5667,5669,5671,5673],{"class":178,"line":1581},[176,5668,1545],{"class":304},[176,5670,1776],{"class":1548},[176,5672,2121],{"class":1548},[176,5674,2124],{"class":304},[176,5676,5677,5679,5681],{"class":178,"line":1597},[176,5678,1545],{"class":304},[176,5680,1549],{"class":1548},[176,5682,2133],{"class":1779},[176,5684,5685],{"class":178,"line":1603},[176,5686,317],{"class":304},[176,5688,5689,5691,5693,5695,5697,5699,5701,5703,5705,5707,5709,5711,5713,5715,5717,5719,5721],{"class":178,"line":1878},[176,5690,323],{"class":282},[176,5692,685],{"class":282},[176,5694,2146],{"class":655},[176,5696,709],{"class":182},[176,5698,1822],{"class":204},[176,5700,326],{"class":182},[176,5702,1827],{"class":186},[176,5704,719],{"class":182},[176,5706,2109],{"class":204},[176,5708,326],{"class":182},[176,5710,1888],{"class":186},[176,5712,719],{"class":182},[176,5714,2121],{"class":200},[176,5716,326],{"class":182},[176,5718,2171],{"class":186},[176,5720,1839],{"class":182},[176,5722,2133],{"class":204},[176,5724,5725],{"class":178,"line":1883},[176,5726,1578],{"class":182},[176,5728,5729,5731,5733,5735,5737,5739,5741,5743,5745,5747,5749,5751,5753,5755,5757,5759,5761,5763,5765,5767,5769],{"class":178,"line":1908},[176,5730,1585],{"class":1584},[176,5732,326],{"class":182},[176,5734,1888],{"class":186},[176,5736,1891],{"class":182},[176,5738,2192],{"class":655},[176,5740,1865],{"class":182},[176,5742,2171],{"class":186},[176,5744,719],{"class":182},[176,5746,2201],{"class":182},[176,5748,662],{"class":182},[176,5750,1391],{"class":665},[176,5752,662],{"class":182},[176,5754,719],{"class":182},[176,5756,674],{"class":182},[176,5758,2214],{"class":665},[176,5760,662],{"class":182},[176,5762,719],{"class":182},[176,5764,674],{"class":182},[176,5766,1901],{"class":665},[176,5768,662],{"class":182},[176,5770,2227],{"class":182},[176,5772,5773],{"class":178,"line":1913},[176,5774,1600],{"class":182},[176,5776,5777],{"class":178,"line":1924},[176,5778,352],{"class":182},[1616,5780,5782],{"id":5781},"performing-operations","Performing operations",[156,5784,5785,5786,5788,5789,5791,5792,5794,5795,5798],{},"The main purpose of endpoints like ",[173,5787,362],{}," or ",[173,5790,2246],{}," is to retrieve data from the database, not change it. But endpoints like ",[173,5793,2250],{},", ",[173,5796,5797],{},"update,"," etc. make changes to the database. It is also possible to customize how certain operations, like storing a model, are performed.",[156,5800,5801],{},"In the given example we would force fill the attributes on the post, if the currently authenticated user is an admin (roles implementation here is imaginary):",[166,5803,5805],{"className":168,"code":5804,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * Fully-qualified model class name\n     *\u002F\n    protected $model = Post::class; \u002F\u002F or \"App\\Models\\Post\"\n\n    ...\n\n    \u002F**\n     * Fills attributes on the given entity and stores it in database.\n     *\n     * @param Request $request\n     * @param Model $entity\n     * @param array $attributes\n     *\u002F\n    protected function performStore(Request $request, Model $entity, array $attributes): void\n    {\n        if ($this->resolveUser()->hasRole('admin')) {\n            $entity->forceFill($attributes);\n        } else {\n            $entity->fill($attributes);\n        }\n        $entity->save();\n    }\n}\n",[173,5806,5807,5813,5817,5837,5841,5857,5877,5881,5891,5895,5899,5903,5907,5927,5931,5935,5939,5943,5948,5952,5962,5972,5982,5986,6022,6026,6050,6066,6074,6090,6094,6106,6110],{"__ignoreMap":171},[176,5808,5809,5811],{"class":178,"line":179},[176,5810,183],{"class":182},[176,5812,187],{"class":186},[176,5814,5815],{"class":178,"line":190},[176,5816,194],{"emptyLinePlaceholder":193},[176,5818,5819,5821,5823,5825,5827,5829,5831,5833,5835],{"class":178,"line":197},[176,5820,201],{"class":200},[176,5822,205],{"class":204},[176,5824,208],{"class":182},[176,5826,211],{"class":204},[176,5828,208],{"class":182},[176,5830,216],{"class":204},[176,5832,208],{"class":182},[176,5834,221],{"class":204},[176,5836,224],{"class":182},[176,5838,5839],{"class":178,"line":227},[176,5840,194],{"emptyLinePlaceholder":193},[176,5842,5843,5845,5847,5849,5851,5853,5855],{"class":178,"line":232},[176,5844,235],{"class":200},[176,5846,205],{"class":186},[176,5848,208],{"class":182},[176,5850,94],{"class":186},[176,5852,208],{"class":182},[176,5854,246],{"class":186},[176,5856,224],{"class":182},[176,5858,5859,5861,5863,5865,5867,5869,5871,5873,5875],{"class":178,"line":251},[176,5860,235],{"class":200},[176,5862,256],{"class":186},[176,5864,208],{"class":182},[176,5866,211],{"class":186},[176,5868,208],{"class":182},[176,5870,216],{"class":186},[176,5872,208],{"class":182},[176,5874,269],{"class":186},[176,5876,224],{"class":182},[176,5878,5879],{"class":178,"line":274},[176,5880,194],{"emptyLinePlaceholder":193},[176,5882,5883,5885,5887,5889],{"class":178,"line":279},[176,5884,283],{"class":282},[176,5886,286],{"class":204},[176,5888,289],{"class":282},[176,5890,292],{"class":204},[176,5892,5893],{"class":178,"line":295},[176,5894,298],{"class":182},[176,5896,5897],{"class":178,"line":301},[176,5898,305],{"class":304},[176,5900,5901],{"class":178,"line":308},[176,5902,4046],{"class":304},[176,5904,5905],{"class":178,"line":314},[176,5906,317],{"class":304},[176,5908,5909,5911,5913,5915,5917,5919,5921,5923,5925],{"class":178,"line":320},[176,5910,323],{"class":282},[176,5912,326],{"class":182},[176,5914,329],{"class":186},[176,5916,332],{"class":182},[176,5918,335],{"class":204},[176,5920,338],{"class":182},[176,5922,283],{"class":200},[176,5924,343],{"class":182},[176,5926,4071],{"class":304},[176,5928,5929],{"class":178,"line":349},[176,5930,194],{"emptyLinePlaceholder":193},[176,5932,5933],{"class":178,"line":502},[176,5934,696],{"class":182},[176,5936,5937],{"class":178,"line":507},[176,5938,194],{"emptyLinePlaceholder":193},[176,5940,5941],{"class":178,"line":528},[176,5942,305],{"class":304},[176,5944,5945],{"class":178,"line":1542},[176,5946,5947],{"class":304},"     * Fills attributes on the given entity and stores it in database.\n",[176,5949,5950],{"class":178,"line":1555},[176,5951,1539],{"class":304},[176,5953,5954,5956,5958,5960],{"class":178,"line":1560},[176,5955,1545],{"class":304},[176,5957,1776],{"class":1548},[176,5959,1780],{"class":1779},[176,5961,1783],{"class":304},[176,5963,5964,5966,5968,5970],{"class":178,"line":1575},[176,5965,1545],{"class":304},[176,5967,1776],{"class":1548},[176,5969,2426],{"class":1779},[176,5971,2429],{"class":304},[176,5973,5974,5976,5978,5980],{"class":178,"line":1581},[176,5975,1545],{"class":304},[176,5977,1776],{"class":1548},[176,5979,1792],{"class":1548},[176,5981,2440],{"class":304},[176,5983,5984],{"class":178,"line":1597},[176,5985,317],{"class":304},[176,5987,5988,5990,5992,5994,5996,5998,6000,6002,6004,6006,6008,6010,6012,6014,6016,6018,6020],{"class":178,"line":1603},[176,5989,323],{"class":282},[176,5991,685],{"class":282},[176,5993,2453],{"class":655},[176,5995,709],{"class":182},[176,5997,1822],{"class":204},[176,5999,326],{"class":182},[176,6001,1827],{"class":186},[176,6003,719],{"class":182},[176,6005,2426],{"class":204},[176,6007,326],{"class":182},[176,6009,2470],{"class":186},[176,6011,719],{"class":182},[176,6013,1792],{"class":200},[176,6015,326],{"class":182},[176,6017,2479],{"class":186},[176,6019,1839],{"class":182},[176,6021,2484],{"class":200},[176,6023,6024],{"class":178,"line":1878},[176,6025,1578],{"class":182},[176,6027,6028,6030,6032,6034,6036,6038,6040,6042,6044,6046,6048],{"class":178,"line":1883},[176,6029,2493],{"class":1584},[176,6031,2496],{"class":182},[176,6033,2499],{"class":655},[176,6035,2502],{"class":182},[176,6037,2505],{"class":655},[176,6039,709],{"class":182},[176,6041,662],{"class":182},[176,6043,2512],{"class":665},[176,6045,662],{"class":182},[176,6047,2517],{"class":182},[176,6049,691],{"class":182},[176,6051,6052,6054,6056,6058,6060,6062,6064],{"class":178,"line":1908},[176,6053,2524],{"class":182},[176,6055,2470],{"class":186},[176,6057,1891],{"class":182},[176,6059,2531],{"class":655},[176,6061,1865],{"class":182},[176,6063,2479],{"class":186},[176,6065,728],{"class":182},[176,6067,6068,6070,6072],{"class":178,"line":1913},[176,6069,2542],{"class":182},[176,6071,2545],{"class":1584},[176,6073,691],{"class":182},[176,6075,6076,6078,6080,6082,6084,6086,6088],{"class":178,"line":1924},[176,6077,2524],{"class":182},[176,6079,2470],{"class":186},[176,6081,1891],{"class":182},[176,6083,2558],{"class":655},[176,6085,1865],{"class":182},[176,6087,2479],{"class":186},[176,6089,728],{"class":182},[176,6091,6092],{"class":178,"line":1929},[176,6093,2569],{"class":182},[176,6095,6096,6098,6100,6102,6104],{"class":178,"line":2572},[176,6097,1850],{"class":182},[176,6099,2470],{"class":186},[176,6101,1891],{"class":182},[176,6103,2581],{"class":655},[176,6105,1252],{"class":182},[176,6107,6108],{"class":178,"line":2586},[176,6109,1600],{"class":182},[176,6111,6112],{"class":178,"line":2591},[176,6113,352],{"class":182},[532,6115,6116],{"icon":534},[156,6117,6118,6119,6121],{},"You can also customize how attributes are filled on the model by overriding the ",[173,6120,2600],{}," method.",[354,6123,6125],{"id":6124},"for-a-group-of-endpoints","For a Group of Endpoints",[156,6127,6128,6129,6131,6132,6134],{},"Cool, now the index endpoint returns only published posts. But what if you would like to apply the same constraint to ",[173,6130,2246],{}," endpoint as well? Sure enough, we could duplicate it and override the ",[173,6133,2616],{}," method, but there is a better way.",[1616,6136,5198],{"id":6137},"building-queries-1",[156,6139,6140,6141,6143,6144,6146,6147,5794,6149,5794,6151,5794,6153,6155,6156,6158],{},"If you take a look at how ",[173,6142,1627],{}," method is implemented, you will notice that it uses the ",[173,6145,2628],{}," method. In fact, this method is used by ",[173,6148,362],{},[173,6150,2246],{},[173,6152,2253],{},[173,6154,2639],{},", and ",[173,6157,1266],{}," endpoints to build the query for fetching model(s), and you can override it as well!",[156,6160,6161,6162,4873,6164,6166,6167,5794,6169,6155,6171,6173],{},"Here is what it would look like if you would like to apply the same constraint to ",[173,6163,362],{},[173,6165,2246],{}," endpoints (and ",[173,6168,2253],{},[173,6170,2639],{},[173,6172,1266],{},") at once:",[166,6175,6177],{"className":168,"code":6176,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * Fully-qualified model class name\n     *\u002F\n    protected $model = Post::class; \u002F\u002F or \"App\\Models\\Post\"\n\n    \u002F**\n     * Builds Eloquent query for fetching entity(-ies).\n     *\n     * @param Request $request\n     * @param array $requestedRelations\n     * @return Builder\n     *\u002F\n    protected function buildFetchQuery(Request $request, array $requestedRelations): Builder\n    {\n        $query = parent::buildFetchQuery($request, $requestedRelations);\n\n        $query->whereNotNull('published_at');\n\n        return $query;\n    }\n\n    ...\n}\n",[173,6178,6179,6185,6189,6209,6213,6229,6249,6253,6263,6267,6271,6275,6279,6299,6303,6307,6312,6316,6326,6336,6344,6348,6376,6380,6406,6410,6430,6434,6444,6448,6452,6456],{"__ignoreMap":171},[176,6180,6181,6183],{"class":178,"line":179},[176,6182,183],{"class":182},[176,6184,187],{"class":186},[176,6186,6187],{"class":178,"line":190},[176,6188,194],{"emptyLinePlaceholder":193},[176,6190,6191,6193,6195,6197,6199,6201,6203,6205,6207],{"class":178,"line":197},[176,6192,201],{"class":200},[176,6194,205],{"class":204},[176,6196,208],{"class":182},[176,6198,211],{"class":204},[176,6200,208],{"class":182},[176,6202,216],{"class":204},[176,6204,208],{"class":182},[176,6206,221],{"class":204},[176,6208,224],{"class":182},[176,6210,6211],{"class":178,"line":227},[176,6212,194],{"emptyLinePlaceholder":193},[176,6214,6215,6217,6219,6221,6223,6225,6227],{"class":178,"line":232},[176,6216,235],{"class":200},[176,6218,205],{"class":186},[176,6220,208],{"class":182},[176,6222,94],{"class":186},[176,6224,208],{"class":182},[176,6226,246],{"class":186},[176,6228,224],{"class":182},[176,6230,6231,6233,6235,6237,6239,6241,6243,6245,6247],{"class":178,"line":251},[176,6232,235],{"class":200},[176,6234,256],{"class":186},[176,6236,208],{"class":182},[176,6238,211],{"class":186},[176,6240,208],{"class":182},[176,6242,216],{"class":186},[176,6244,208],{"class":182},[176,6246,269],{"class":186},[176,6248,224],{"class":182},[176,6250,6251],{"class":178,"line":274},[176,6252,194],{"emptyLinePlaceholder":193},[176,6254,6255,6257,6259,6261],{"class":178,"line":279},[176,6256,283],{"class":282},[176,6258,286],{"class":204},[176,6260,289],{"class":282},[176,6262,292],{"class":204},[176,6264,6265],{"class":178,"line":295},[176,6266,298],{"class":182},[176,6268,6269],{"class":178,"line":301},[176,6270,305],{"class":304},[176,6272,6273],{"class":178,"line":308},[176,6274,4046],{"class":304},[176,6276,6277],{"class":178,"line":314},[176,6278,317],{"class":304},[176,6280,6281,6283,6285,6287,6289,6291,6293,6295,6297],{"class":178,"line":320},[176,6282,323],{"class":282},[176,6284,326],{"class":182},[176,6286,329],{"class":186},[176,6288,332],{"class":182},[176,6290,335],{"class":204},[176,6292,338],{"class":182},[176,6294,283],{"class":200},[176,6296,343],{"class":182},[176,6298,4071],{"class":304},[176,6300,6301],{"class":178,"line":349},[176,6302,194],{"emptyLinePlaceholder":193},[176,6304,6305],{"class":178,"line":502},[176,6306,305],{"class":304},[176,6308,6309],{"class":178,"line":507},[176,6310,6311],{"class":304},"     * Builds Eloquent query for fetching entity(-ies).\n",[176,6313,6314],{"class":178,"line":528},[176,6315,1539],{"class":304},[176,6317,6318,6320,6322,6324],{"class":178,"line":1542},[176,6319,1545],{"class":304},[176,6321,1776],{"class":1548},[176,6323,1780],{"class":1779},[176,6325,1783],{"class":304},[176,6327,6328,6330,6332,6334],{"class":178,"line":1555},[176,6329,1545],{"class":304},[176,6331,1776],{"class":1548},[176,6333,1792],{"class":1548},[176,6335,1795],{"class":304},[176,6337,6338,6340,6342],{"class":178,"line":1560},[176,6339,1545],{"class":304},[176,6341,1549],{"class":1548},[176,6343,1804],{"class":1779},[176,6345,6346],{"class":178,"line":1575},[176,6347,317],{"class":304},[176,6349,6350,6352,6354,6356,6358,6360,6362,6364,6366,6368,6370,6372,6374],{"class":178,"line":1581},[176,6351,323],{"class":282},[176,6353,685],{"class":282},[176,6355,2841],{"class":655},[176,6357,709],{"class":182},[176,6359,1822],{"class":204},[176,6361,326],{"class":182},[176,6363,1827],{"class":186},[176,6365,719],{"class":182},[176,6367,1792],{"class":200},[176,6369,326],{"class":182},[176,6371,1836],{"class":186},[176,6373,1839],{"class":182},[176,6375,1804],{"class":204},[176,6377,6378],{"class":178,"line":1597},[176,6379,1578],{"class":182},[176,6381,6382,6384,6386,6388,6390,6392,6394,6396,6398,6400,6402,6404],{"class":178,"line":1603},[176,6383,1850],{"class":182},[176,6385,1853],{"class":186},[176,6387,332],{"class":182},[176,6389,1858],{"class":282},[176,6391,338],{"class":182},[176,6393,2628],{"class":655},[176,6395,1865],{"class":182},[176,6397,1827],{"class":186},[176,6399,719],{"class":182},[176,6401,326],{"class":182},[176,6403,1836],{"class":186},[176,6405,728],{"class":182},[176,6407,6408],{"class":178,"line":1878},[176,6409,194],{"emptyLinePlaceholder":193},[176,6411,6412,6414,6416,6418,6420,6422,6424,6426,6428],{"class":178,"line":1883},[176,6413,1850],{"class":182},[176,6415,1888],{"class":186},[176,6417,1891],{"class":182},[176,6419,1894],{"class":655},[176,6421,709],{"class":182},[176,6423,662],{"class":182},[176,6425,1901],{"class":665},[176,6427,662],{"class":182},[176,6429,728],{"class":182},[176,6431,6432],{"class":178,"line":1908},[176,6433,194],{"emptyLinePlaceholder":193},[176,6435,6436,6438,6440,6442],{"class":178,"line":1913},[176,6437,1585],{"class":1584},[176,6439,326],{"class":182},[176,6441,1888],{"class":186},[176,6443,224],{"class":182},[176,6445,6446],{"class":178,"line":1924},[176,6447,1600],{"class":182},[176,6449,6450],{"class":178,"line":1929},[176,6451,194],{"emptyLinePlaceholder":193},[176,6453,6454],{"class":178,"line":2572},[176,6455,696],{"class":182},[176,6457,6458],{"class":178,"line":2586},[176,6459,352],{"class":182},[1616,6461,5488],{"id":6462},"running-queries-1",[156,6464,6465,6466,6468,6469,5794,6471,5794,6473,6155,6475,6477,6478,6480],{},"While ",[173,6467,362],{}," endpoint is sort of an exception when it comes to running queries (since we fetch a list of models, not a single model), ",[173,6470,2246],{},[173,6472,2253],{},[173,6474,2639],{},[173,6476,1266],{}," endpoints share the same logic and use ",[173,6479,2966],{}," under the hood.",[156,6482,6483,6484,5794,6486,6155,6488,6490],{},"With a bit of refactor we get the controller where only published blog posts are fetched and only ",[173,6485,1391],{},[173,6487,2214],{},[173,6489,1901],{}," columns (attributes) are retrieved from the database.",[166,6492,6494],{"className":168,"code":6493,"language":170,"meta":171,"style":171},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\Controller;\n\nclass PostsController extends Controller\n{\n    \u002F**\n     * Fully-qualified model class name\n     *\u002F\n    protected $model = Post::class; \u002F\u002F or \"App\\Models\\Post\"\n\n    \u002F**\n     * The list of attributes to select from db\n     *\u002F\n    protected $attributes = ['id', 'title', 'published_at'];\n\n    \u002F**\n     * Builds Eloquent query for fetching entity(-ies).\n     *\n     * @param Request $request\n     * @param array $requestedRelations\n     * @return Builder\n     *\u002F\n    protected function buildFetchQuery(Request $request, array $requestedRelations): Builder\n    {\n        $query = parent::buildFetchQuery($request, $requestedRelations);\n\n        $query->whereNotNull('published_at');\n\n        return $query;\n    }\n\n    \u002F**\n     * Runs the given query for fetching entity.\n     *\n     * @param Request $request\n     * @param Builder $query\n     * @param int|string $key\n     * @return Model\n     *\u002F\n    protected function runFetchQuery(Request $request, Builder $query, $key): Model\n    {\n        return $query->select($this->attributes)->findOrFail($key);\n    }\n\n    \u002F**\n     * Runs the given query for fetching entities in index method.\n     *\n     * @param Request $request\n     * @param Builder $query\n     * @param int $paginationLimit\n     * @return LengthAwarePaginator\n     *\u002F\n    protected function runIndexFetchQuery(Request $request, Builder $query, int $paginationLimit): LengthAwarePaginator\n    {\n        return $query->paginate($paginationLimit, $this->attributes);\n    }\n\n    \u002F**\n     * Fills attributes on the given entity and stores it in database.\n     *\n     * @param Request $request\n     * @param Model $post\n     * @param array $attributes\n     *\u002F\n    protected function performStore(Request $request, Model $post, array $attributes): void\n    {\n        if ($this->resolveUser()->hasRole('admin')) {\n            $post->forceFill($attributes);\n        } else {\n            $post->fill($attributes);\n        }\n        $post->save();\n    }\n}\n",[173,6495,6496,6502,6506,6526,6530,6546,6566,6570,6580,6584,6588,6592,6596,6616,6620,6624,6629,6633,6669,6673,6677,6681,6685,6695,6705,6713,6717,6745,6749,6775,6779,6799,6803,6813,6817,6821,6825,6830,6834,6844,6854,6868,6876,6880,6914,6918,6944,6948,6952,6956,6960,6964,6974,6984,6994,7002,7006,7042,7046,7070,7074,7078,7082,7086,7090,7100,7110,7120,7124,7160,7164,7188,7204,7212,7228,7232,7244,7248],{"__ignoreMap":171},[176,6497,6498,6500],{"class":178,"line":179},[176,6499,183],{"class":182},[176,6501,187],{"class":186},[176,6503,6504],{"class":178,"line":190},[176,6505,194],{"emptyLinePlaceholder":193},[176,6507,6508,6510,6512,6514,6516,6518,6520,6522,6524],{"class":178,"line":197},[176,6509,201],{"class":200},[176,6511,205],{"class":204},[176,6513,208],{"class":182},[176,6515,211],{"class":204},[176,6517,208],{"class":182},[176,6519,216],{"class":204},[176,6521,208],{"class":182},[176,6523,221],{"class":204},[176,6525,224],{"class":182},[176,6527,6528],{"class":178,"line":227},[176,6529,194],{"emptyLinePlaceholder":193},[176,6531,6532,6534,6536,6538,6540,6542,6544],{"class":178,"line":232},[176,6533,235],{"class":200},[176,6535,205],{"class":186},[176,6537,208],{"class":182},[176,6539,94],{"class":186},[176,6541,208],{"class":182},[176,6543,246],{"class":186},[176,6545,224],{"class":182},[176,6547,6548,6550,6552,6554,6556,6558,6560,6562,6564],{"class":178,"line":251},[176,6549,235],{"class":200},[176,6551,256],{"class":186},[176,6553,208],{"class":182},[176,6555,211],{"class":186},[176,6557,208],{"class":182},[176,6559,216],{"class":186},[176,6561,208],{"class":182},[176,6563,269],{"class":186},[176,6565,224],{"class":182},[176,6567,6568],{"class":178,"line":274},[176,6569,194],{"emptyLinePlaceholder":193},[176,6571,6572,6574,6576,6578],{"class":178,"line":279},[176,6573,283],{"class":282},[176,6575,286],{"class":204},[176,6577,289],{"class":282},[176,6579,292],{"class":204},[176,6581,6582],{"class":178,"line":295},[176,6583,298],{"class":182},[176,6585,6586],{"class":178,"line":301},[176,6587,305],{"class":304},[176,6589,6590],{"class":178,"line":308},[176,6591,4046],{"class":304},[176,6593,6594],{"class":178,"line":314},[176,6595,317],{"class":304},[176,6597,6598,6600,6602,6604,6606,6608,6610,6612,6614],{"class":178,"line":320},[176,6599,323],{"class":282},[176,6601,326],{"class":182},[176,6603,329],{"class":186},[176,6605,332],{"class":182},[176,6607,335],{"class":204},[176,6609,338],{"class":182},[176,6611,283],{"class":200},[176,6613,343],{"class":182},[176,6615,4071],{"class":304},[176,6617,6618],{"class":178,"line":349},[176,6619,194],{"emptyLinePlaceholder":193},[176,6621,6622],{"class":178,"line":502},[176,6623,305],{"class":304},[176,6625,6626],{"class":178,"line":507},[176,6627,6628],{"class":304},"     * The list of attributes to select from db\n",[176,6630,6631],{"class":178,"line":528},[176,6632,317],{"class":304},[176,6634,6635,6637,6639,6641,6643,6645,6647,6649,6651,6653,6655,6657,6659,6661,6663,6665,6667],{"class":178,"line":1542},[176,6636,323],{"class":282},[176,6638,326],{"class":182},[176,6640,3128],{"class":186},[176,6642,332],{"class":182},[176,6644,2201],{"class":182},[176,6646,662],{"class":182},[176,6648,1391],{"class":665},[176,6650,662],{"class":182},[176,6652,719],{"class":182},[176,6654,674],{"class":182},[176,6656,2214],{"class":665},[176,6658,662],{"class":182},[176,6660,719],{"class":182},[176,6662,674],{"class":182},[176,6664,1901],{"class":665},[176,6666,662],{"class":182},[176,6668,3157],{"class":182},[176,6670,6671],{"class":178,"line":1555},[176,6672,194],{"emptyLinePlaceholder":193},[176,6674,6675],{"class":178,"line":1560},[176,6676,305],{"class":304},[176,6678,6679],{"class":178,"line":1575},[176,6680,6311],{"class":304},[176,6682,6683],{"class":178,"line":1581},[176,6684,1539],{"class":304},[176,6686,6687,6689,6691,6693],{"class":178,"line":1597},[176,6688,1545],{"class":304},[176,6690,1776],{"class":1548},[176,6692,1780],{"class":1779},[176,6694,1783],{"class":304},[176,6696,6697,6699,6701,6703],{"class":178,"line":1603},[176,6698,1545],{"class":304},[176,6700,1776],{"class":1548},[176,6702,1792],{"class":1548},[176,6704,1795],{"class":304},[176,6706,6707,6709,6711],{"class":178,"line":1878},[176,6708,1545],{"class":304},[176,6710,1549],{"class":1548},[176,6712,1804],{"class":1779},[176,6714,6715],{"class":178,"line":1883},[176,6716,317],{"class":304},[176,6718,6719,6721,6723,6725,6727,6729,6731,6733,6735,6737,6739,6741,6743],{"class":178,"line":1908},[176,6720,323],{"class":282},[176,6722,685],{"class":282},[176,6724,2841],{"class":655},[176,6726,709],{"class":182},[176,6728,1822],{"class":204},[176,6730,326],{"class":182},[176,6732,1827],{"class":186},[176,6734,719],{"class":182},[176,6736,1792],{"class":200},[176,6738,326],{"class":182},[176,6740,1836],{"class":186},[176,6742,1839],{"class":182},[176,6744,1804],{"class":204},[176,6746,6747],{"class":178,"line":1913},[176,6748,1578],{"class":182},[176,6750,6751,6753,6755,6757,6759,6761,6763,6765,6767,6769,6771,6773],{"class":178,"line":1924},[176,6752,1850],{"class":182},[176,6754,1853],{"class":186},[176,6756,332],{"class":182},[176,6758,1858],{"class":282},[176,6760,338],{"class":182},[176,6762,2628],{"class":655},[176,6764,1865],{"class":182},[176,6766,1827],{"class":186},[176,6768,719],{"class":182},[176,6770,326],{"class":182},[176,6772,1836],{"class":186},[176,6774,728],{"class":182},[176,6776,6777],{"class":178,"line":1929},[176,6778,194],{"emptyLinePlaceholder":193},[176,6780,6781,6783,6785,6787,6789,6791,6793,6795,6797],{"class":178,"line":2572},[176,6782,1850],{"class":182},[176,6784,1888],{"class":186},[176,6786,1891],{"class":182},[176,6788,1894],{"class":655},[176,6790,709],{"class":182},[176,6792,662],{"class":182},[176,6794,1901],{"class":665},[176,6796,662],{"class":182},[176,6798,728],{"class":182},[176,6800,6801],{"class":178,"line":2586},[176,6802,194],{"emptyLinePlaceholder":193},[176,6804,6805,6807,6809,6811],{"class":178,"line":2591},[176,6806,1585],{"class":1584},[176,6808,326],{"class":182},[176,6810,1888],{"class":186},[176,6812,224],{"class":182},[176,6814,6815],{"class":178,"line":3304},[176,6816,1600],{"class":182},[176,6818,6819],{"class":178,"line":3309},[176,6820,194],{"emptyLinePlaceholder":193},[176,6822,6823],{"class":178,"line":3314},[176,6824,305],{"class":304},[176,6826,6827],{"class":178,"line":3319},[176,6828,6829],{"class":304},"     * Runs the given query for fetching entity.\n",[176,6831,6832],{"class":178,"line":3325},[176,6833,1539],{"class":304},[176,6835,6836,6838,6840,6842],{"class":178,"line":3330},[176,6837,1545],{"class":304},[176,6839,1776],{"class":1548},[176,6841,1780],{"class":1779},[176,6843,1783],{"class":304},[176,6845,6846,6848,6850,6852],{"class":178,"line":3341},[176,6847,1545],{"class":304},[176,6849,1776],{"class":1548},[176,6851,2109],{"class":1779},[176,6853,2112],{"class":304},[176,6855,6856,6858,6860,6862,6864,6866],{"class":178,"line":3352},[176,6857,1545],{"class":304},[176,6859,1776],{"class":1548},[176,6861,2121],{"class":1548},[176,6863,764],{"class":1584},[176,6865,3363],{"class":1548},[176,6867,3366],{"class":304},[176,6869,6870,6872,6874],{"class":178,"line":3369},[176,6871,1545],{"class":304},[176,6873,1549],{"class":1548},[176,6875,3376],{"class":1779},[176,6877,6878],{"class":178,"line":3379},[176,6879,317],{"class":304},[176,6881,6882,6884,6886,6888,6890,6892,6894,6896,6898,6900,6902,6904,6906,6908,6910,6912],{"class":178,"line":3384},[176,6883,323],{"class":282},[176,6885,685],{"class":282},[176,6887,3391],{"class":655},[176,6889,709],{"class":182},[176,6891,1822],{"class":204},[176,6893,326],{"class":182},[176,6895,1827],{"class":186},[176,6897,719],{"class":182},[176,6899,2109],{"class":204},[176,6901,326],{"class":182},[176,6903,1888],{"class":186},[176,6905,719],{"class":182},[176,6907,326],{"class":182},[176,6909,3414],{"class":186},[176,6911,1839],{"class":182},[176,6913,3376],{"class":204},[176,6915,6916],{"class":178,"line":3421},[176,6917,1578],{"class":182},[176,6919,6920,6922,6924,6926,6928,6930,6932,6934,6936,6938,6940,6942],{"class":178,"line":3426},[176,6921,1585],{"class":1584},[176,6923,326],{"class":182},[176,6925,1888],{"class":186},[176,6927,1891],{"class":182},[176,6929,3437],{"class":655},[176,6931,3440],{"class":182},[176,6933,2479],{"class":186},[176,6935,1247],{"class":182},[176,6937,3447],{"class":655},[176,6939,1865],{"class":182},[176,6941,3414],{"class":186},[176,6943,728],{"class":182},[176,6945,6946],{"class":178,"line":3456},[176,6947,1600],{"class":182},[176,6949,6950],{"class":178,"line":3461},[176,6951,194],{"emptyLinePlaceholder":193},[176,6953,6954],{"class":178,"line":3466},[176,6955,305],{"class":304},[176,6957,6958],{"class":178,"line":3471},[176,6959,5640],{"class":304},[176,6961,6962],{"class":178,"line":3476},[176,6963,1539],{"class":304},[176,6965,6966,6968,6970,6972],{"class":178,"line":3481},[176,6967,1545],{"class":304},[176,6969,1776],{"class":1548},[176,6971,1780],{"class":1779},[176,6973,1783],{"class":304},[176,6975,6976,6978,6980,6982],{"class":178,"line":3492},[176,6977,1545],{"class":304},[176,6979,1776],{"class":1548},[176,6981,2109],{"class":1779},[176,6983,2112],{"class":304},[176,6985,6986,6988,6990,6992],{"class":178,"line":3503},[176,6987,1545],{"class":304},[176,6989,1776],{"class":1548},[176,6991,2121],{"class":1548},[176,6993,2124],{"class":304},[176,6995,6996,6998,7000],{"class":178,"line":3514},[176,6997,1545],{"class":304},[176,6999,1549],{"class":1548},[176,7001,2133],{"class":1779},[176,7003,7004],{"class":178,"line":3523},[176,7005,317],{"class":304},[176,7007,7008,7010,7012,7014,7016,7018,7020,7022,7024,7026,7028,7030,7032,7034,7036,7038,7040],{"class":178,"line":3528},[176,7009,323],{"class":282},[176,7011,685],{"class":282},[176,7013,2146],{"class":655},[176,7015,709],{"class":182},[176,7017,1822],{"class":204},[176,7019,326],{"class":182},[176,7021,1827],{"class":186},[176,7023,719],{"class":182},[176,7025,2109],{"class":204},[176,7027,326],{"class":182},[176,7029,1888],{"class":186},[176,7031,719],{"class":182},[176,7033,2121],{"class":200},[176,7035,326],{"class":182},[176,7037,2171],{"class":186},[176,7039,1839],{"class":182},[176,7041,2133],{"class":204},[176,7043,7044],{"class":178,"line":3565},[176,7045,1578],{"class":182},[176,7047,7048,7050,7052,7054,7056,7058,7060,7062,7064,7066,7068],{"class":178,"line":3570},[176,7049,1585],{"class":1584},[176,7051,326],{"class":182},[176,7053,1888],{"class":186},[176,7055,1891],{"class":182},[176,7057,2192],{"class":655},[176,7059,1865],{"class":182},[176,7061,2171],{"class":186},[176,7063,719],{"class":182},[176,7065,3589],{"class":182},[176,7067,2479],{"class":186},[176,7069,728],{"class":182},[176,7071,7072],{"class":178,"line":3596},[176,7073,1600],{"class":182},[176,7075,7076],{"class":178,"line":3601},[176,7077,194],{"emptyLinePlaceholder":193},[176,7079,7080],{"class":178,"line":3606},[176,7081,305],{"class":304},[176,7083,7084],{"class":178,"line":3611},[176,7085,5947],{"class":304},[176,7087,7088],{"class":178,"line":3616},[176,7089,1539],{"class":304},[176,7091,7092,7094,7096,7098],{"class":178,"line":3621},[176,7093,1545],{"class":304},[176,7095,1776],{"class":1548},[176,7097,1780],{"class":1779},[176,7099,1783],{"class":304},[176,7101,7102,7104,7106,7108],{"class":178,"line":3632},[176,7103,1545],{"class":304},[176,7105,1776],{"class":1548},[176,7107,2426],{"class":1779},[176,7109,3641],{"class":304},[176,7111,7112,7114,7116,7118],{"class":178,"line":3644},[176,7113,1545],{"class":304},[176,7115,1776],{"class":1548},[176,7117,1792],{"class":1548},[176,7119,2440],{"class":304},[176,7121,7122],{"class":178,"line":3655},[176,7123,317],{"class":304},[176,7125,7126,7128,7130,7132,7134,7136,7138,7140,7142,7144,7146,7148,7150,7152,7154,7156,7158],{"class":178,"line":3660},[176,7127,323],{"class":282},[176,7129,685],{"class":282},[176,7131,2453],{"class":655},[176,7133,709],{"class":182},[176,7135,1822],{"class":204},[176,7137,326],{"class":182},[176,7139,1827],{"class":186},[176,7141,719],{"class":182},[176,7143,2426],{"class":204},[176,7145,326],{"class":182},[176,7147,3683],{"class":186},[176,7149,719],{"class":182},[176,7151,1792],{"class":200},[176,7153,326],{"class":182},[176,7155,2479],{"class":186},[176,7157,1839],{"class":182},[176,7159,2484],{"class":200},[176,7161,7162],{"class":178,"line":3698},[176,7163,1578],{"class":182},[176,7165,7166,7168,7170,7172,7174,7176,7178,7180,7182,7184,7186],{"class":178,"line":3703},[176,7167,2493],{"class":1584},[176,7169,2496],{"class":182},[176,7171,2499],{"class":655},[176,7173,2502],{"class":182},[176,7175,2505],{"class":655},[176,7177,709],{"class":182},[176,7179,662],{"class":182},[176,7181,2512],{"class":665},[176,7183,662],{"class":182},[176,7185,2517],{"class":182},[176,7187,691],{"class":182},[176,7189,7190,7192,7194,7196,7198,7200,7202],{"class":178,"line":3728},[176,7191,2524],{"class":182},[176,7193,3683],{"class":186},[176,7195,1891],{"class":182},[176,7197,2531],{"class":655},[176,7199,1865],{"class":182},[176,7201,2479],{"class":186},[176,7203,728],{"class":182},[176,7205,7206,7208,7210],{"class":178,"line":3745},[176,7207,2542],{"class":182},[176,7209,2545],{"class":1584},[176,7211,691],{"class":182},[176,7213,7214,7216,7218,7220,7222,7224,7226],{"class":178,"line":3754},[176,7215,2524],{"class":182},[176,7217,3683],{"class":186},[176,7219,1891],{"class":182},[176,7221,2558],{"class":655},[176,7223,1865],{"class":182},[176,7225,2479],{"class":186},[176,7227,728],{"class":182},[176,7229,7230],{"class":178,"line":3771},[176,7231,2569],{"class":182},[176,7233,7234,7236,7238,7240,7242],{"class":178,"line":3776},[176,7235,1850],{"class":182},[176,7237,3683],{"class":186},[176,7239,1891],{"class":182},[176,7241,2581],{"class":655},[176,7243,1252],{"class":182},[176,7245,7246],{"class":178,"line":3789},[176,7247,1600],{"class":182},[176,7249,7250],{"class":178,"line":3794},[176,7251,352],{"class":182},[354,7253,7255],{"id":7254},"standard-operations-methods","Standard Operations Methods",[3801,7257,7258,7271],{},[3804,7259,7260],{},[3807,7261,7262,7265,7267,7269],{},[3810,7263,7264],{},"Method",[3810,7266,3815],{},[3810,7268,3818],{},[3810,7270,3821],{},[3823,7272,7273,7283,7293,7303,7313,7323],{},[3807,7274,7275,7277,7279,7281],{},[3828,7276,362],{},[3828,7278,1627],{},[3828,7280,1940],{},[3828,7282,3836],{},[3807,7284,7285,7287,7289,7291],{},[3828,7286,2250],{},[3828,7288,3843],{},[3828,7290,3846],{},[3828,7292,3849],{},[3807,7294,7295,7297,7299,7301],{},[3828,7296,2246],{},[3828,7298,2616],{},[3828,7300,3858],{},[3828,7302,3836],{},[3807,7304,7305,7307,7309,7311],{},[3828,7306,2253],{},[3828,7308,3867],{},[3828,7310,3870],{},[3828,7312,3873],{},[3807,7314,7315,7317,7319,7321],{},[3828,7316,2639],{},[3828,7318,3880],{},[3828,7320,3883],{},[3828,7322,3886],{},[3807,7324,7325,7327,7329,7331],{},[3828,7326,1266],{},[3828,7328,3893],{},[3828,7330,3896],{},[3828,7332,3899],{},[3901,7334,3903],{},{"title":171,"searchDepth":179,"depth":190,"links":7336},[7337,7340,7343,7344],{"id":3935,"depth":190,"text":3936,"children":7338},[7339],{"id":4078,"depth":197,"text":4079},{"id":4271,"depth":190,"text":4272,"children":7341},[7342],{"id":4729,"depth":197,"text":4730},{"id":4983,"depth":190,"text":4984},{"id":5186,"depth":190,"text":5187,"children":7345},[7346,7347,7348],{"id":5193,"depth":197,"text":5194},{"id":6124,"depth":197,"text":6125},{"id":7254,"depth":197,"text":7255},"Learn how to expose models via API.",{},"\u002Fguide\u002Fmodels",{"title":94,"description":7349},"1.guide\u002F03.models","Ougvzl0gBJYFNUi4oipMDnLe5Lgendw0dSZS6zF_wIo",1784394452336]