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