[{"data":1,"prerenderedAt":2101},["ShallowReactive",2],{"navigation-zh":3,"navigation-v1":81,"\u002Fzh\u002Fguide\u002Fprologue":146,"\u002Fzh\u002Fguide\u002Fprologue-surround":1195,"\u002Fzh\u002Fguide\u002Fprologue-og":1200},[4,55,77],{"title":5,"path":6,"stem":7,"children":8,"page":-1},"指南","\u002Fzh\u002Fguide","zh\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},"序言","\u002Fzh\u002Fguide\u002Fprologue","zh\u002F1.guide\u002F00.prologue",{"title":16,"path":17,"stem":18},"快速上手","\u002Fzh\u002Fguide\u002Fgetting-started","zh\u002F1.guide\u002F02.getting-started",{"title":20,"path":21,"stem":22},"模型","\u002Fzh\u002Fguide\u002Fmodels","zh\u002F1.guide\u002F03.models",{"title":24,"path":25,"stem":26},"关联","\u002Fzh\u002Fguide\u002Frelationships","zh\u002F1.guide\u002F04.relationships",{"title":28,"path":29,"stem":30},"钩子","\u002Fzh\u002Fguide\u002Fhooks","zh\u002F1.guide\u002F05.hooks",{"title":32,"path":33,"stem":34},"搜索","\u002Fzh\u002Fguide\u002Fsearch","zh\u002F1.guide\u002F06.search",{"title":36,"path":37,"stem":38},"批量操作","\u002Fzh\u002Fguide\u002Fbatch-operations","zh\u002F1.guide\u002F07.batch-operations",{"title":40,"path":41,"stem":42},"查询参数","\u002Fzh\u002Fguide\u002Fquery-parameters","zh\u002F1.guide\u002F08.query-parameters",{"title":44,"path":45,"stem":46},"安全","\u002Fzh\u002Fguide\u002Fsecurity","zh\u002F1.guide\u002F09.security",{"title":48,"path":49,"stem":50},"响应","\u002Fzh\u002Fguide\u002Fresponses","zh\u002F1.guide\u002F10.responses",{"title":52,"path":53,"stem":54},"规范","\u002Fzh\u002Fguide\u002Fspecifications","zh\u002F1.guide\u002F11.specifications",{"title":56,"path":57,"stem":58,"children":59},"TypeScript SDK","\u002Fzh\u002Ftypescript-sdk","zh\u002F2.typescript-sdk\u002F01.index",[60,61,64,68,71,74],{"title":10,"path":57,"stem":58},{"title":16,"path":62,"stem":63},"\u002Fzh\u002Ftypescript-sdk\u002Fgetting-started","zh\u002F2.typescript-sdk\u002F02.getting-started",{"title":65,"path":66,"stem":67},"配置","\u002Fzh\u002Ftypescript-sdk\u002Fconfiguration","zh\u002F2.typescript-sdk\u002F03.configuration",{"title":20,"path":69,"stem":70},"\u002Fzh\u002Ftypescript-sdk\u002Fmodels","zh\u002F2.typescript-sdk\u002F04.models",{"title":24,"path":72,"stem":73},"\u002Fzh\u002Ftypescript-sdk\u002Frelationships","zh\u002F2.typescript-sdk\u002F05.relationships",{"title":40,"path":75,"stem":76},"\u002Fzh\u002Ftypescript-sdk\u002Fquery-parameters","zh\u002F2.typescript-sdk\u002F06.query-parameters",{"title":78,"path":79,"stem":80},"视频教程","\u002Fzh\u002Fscreencasts","zh\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":12,"body":148,"description":1189,"extension":1190,"links":1191,"meta":1192,"navigation":435,"path":13,"seo":1193,"stem":14,"__hash__":1194},"docs_zh\u002Fzh\u002F1.guide\u002F00.prologue.md",{"type":149,"value":150,"toc":1171},"minimark",[151,155,160,164,190,197,201,204,413,416,674,677,680,728,731,784,787,790,839,842,853,860,872,959,962,965,969,972,975,982,1002,1005,1011,1014,1031,1034,1040,1072,1075,1078,1085,1088,1093,1124,1129,1167],[152,153,154],"h2",{"id":154},"发布说明",[156,157,159],"h3",{"id":158},"openapi-规范生成","OpenAPI 规范生成",[161,162,163],"p",{},"现在，你只需运行以下命令，即可为所有由 Orion 驱动的端点自动生成 OpenAPI 规范：",[165,166,171],"pre",{"className":167,"code":168,"language":169,"meta":170,"style":170},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","php artisan orion:specs\n","bash","",[172,173,174],"code",{"__ignoreMap":170},[175,176,179,183,187],"span",{"class":177,"line":178},"line",1,[175,180,182],{"class":181},"sBMFI","php",[175,184,186],{"class":185},"sfazB"," artisan",[175,188,189],{"class":185}," orion:specs\n",[161,191,192,193,196],{},"你可以在本指南的",[194,195,52],"a",{"href":53},"一节了解该特性的更多信息。",[156,198,200],{"id":199},"json-字段搜索","JSON 字段搜索",[161,202,203],{},"2.0 版本引入了对 JSON 字段的支持，带来更强大的搜索能力。",[165,205,209],{"className":206,"code":207,"language":208,"meta":170,"style":170},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F (POST) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fposts\u002Fsearch\n{\n    \"filters\" : [\n        {\"field\" : \"options->visible\", \"operator\" : \">=\", \"value\" : true},\n    ],\n    \"search\" : {\n        \"value\" : \"Example post\"\n    },\n    \"sort\" : [\n        {\"field\" : \"options->key\", \"direction\" : \"asc\"},\n    ]\n}\n","json",[172,210,211,217,224,243,299,305,320,340,346,360,401,407],{"__ignoreMap":170},[175,212,213],{"class":177,"line":178},[175,214,216],{"class":215},"sHwdD","\u002F\u002F (POST) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fposts\u002Fsearch\n",[175,218,220],{"class":177,"line":219},2,[175,221,223],{"class":222},"sMK4o","{\n",[175,225,227,230,234,237,240],{"class":177,"line":226},3,[175,228,229],{"class":222},"    \"",[175,231,233],{"class":232},"spNyl","filters",[175,235,236],{"class":222},"\"",[175,238,239],{"class":222}," :",[175,241,242],{"class":222}," [\n",[175,244,246,249,251,254,256,258,261,264,266,269,271,274,276,278,280,283,285,287,289,292,294,296],{"class":177,"line":245},4,[175,247,248],{"class":222},"        {",[175,250,236],{"class":222},[175,252,253],{"class":181},"field",[175,255,236],{"class":222},[175,257,239],{"class":222},[175,259,260],{"class":222}," \"",[175,262,263],{"class":185},"options->visible",[175,265,236],{"class":222},[175,267,268],{"class":222},",",[175,270,260],{"class":222},[175,272,273],{"class":181},"operator",[175,275,236],{"class":222},[175,277,239],{"class":222},[175,279,260],{"class":222},[175,281,282],{"class":185},">=",[175,284,236],{"class":222},[175,286,268],{"class":222},[175,288,260],{"class":222},[175,290,291],{"class":181},"value",[175,293,236],{"class":222},[175,295,239],{"class":222},[175,297,298],{"class":222}," true},\n",[175,300,302],{"class":177,"line":301},5,[175,303,304],{"class":222},"    ],\n",[175,306,308,310,313,315,317],{"class":177,"line":307},6,[175,309,229],{"class":222},[175,311,312],{"class":232},"search",[175,314,236],{"class":222},[175,316,239],{"class":222},[175,318,319],{"class":222}," {\n",[175,321,323,326,328,330,332,334,337],{"class":177,"line":322},7,[175,324,325],{"class":222},"        \"",[175,327,291],{"class":181},[175,329,236],{"class":222},[175,331,239],{"class":222},[175,333,260],{"class":222},[175,335,336],{"class":185},"Example post",[175,338,339],{"class":222},"\"\n",[175,341,343],{"class":177,"line":342},8,[175,344,345],{"class":222},"    },\n",[175,347,349,351,354,356,358],{"class":177,"line":348},9,[175,350,229],{"class":222},[175,352,353],{"class":232},"sort",[175,355,236],{"class":222},[175,357,239],{"class":222},[175,359,242],{"class":222},[175,361,363,365,367,369,371,373,375,378,380,382,384,387,389,391,393,396,398],{"class":177,"line":362},10,[175,364,248],{"class":222},[175,366,236],{"class":222},[175,368,253],{"class":181},[175,370,236],{"class":222},[175,372,239],{"class":222},[175,374,260],{"class":222},[175,376,377],{"class":185},"options->key",[175,379,236],{"class":222},[175,381,268],{"class":222},[175,383,260],{"class":222},[175,385,386],{"class":181},"direction",[175,388,236],{"class":222},[175,390,239],{"class":222},[175,392,260],{"class":222},[175,394,395],{"class":185},"asc",[175,397,236],{"class":222},[175,399,400],{"class":222},"},\n",[175,402,404],{"class":177,"line":403},11,[175,405,406],{"class":222},"    ]\n",[175,408,410],{"class":177,"line":409},12,[175,411,412],{"class":222},"}\n",[161,414,415],{},"要将 JSON 字段内部的字段加入白名单，请使用箭头写法：",[165,417,420],{"className":418,"code":419,"language":182,"meta":170,"style":170},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse Orion\\Http\\Controllers\\Controller;\n\n\u002F\u002F 这里的 options 字段是 Post 模型的 json\u002Fjsonb 字段\n\u002F\u002F visible 和 key 字段是该 json\u002Fjsonb 字段内部的字段\nclass PostsController extends Controller\n{\n    public function filterableBy() : array\n    {\n        return ['options->visible'];\n    }\n\n    public function searchableBy() : array\n    {\n        return [ 'options->key'];\n    }\n\n    public function sortableBy() : array\n    {\n         return ['options->key'];\n    }\n}\n",[172,421,422,431,437,465,469,492,496,501,506,520,524,544,549,569,575,580,596,601,617,622,627,643,648,664,669],{"__ignoreMap":170},[175,423,424,427],{"class":177,"line":178},[175,425,426],{"class":222},"\u003C?",[175,428,430],{"class":429},"sTEyZ","php\n",[175,432,433],{"class":177,"line":219},[175,434,436],{"emptyLinePlaceholder":435},true,"\n",[175,438,439,443,446,449,452,454,457,459,462],{"class":177,"line":226},[175,440,442],{"class":441},"sbssI","namespace",[175,444,445],{"class":181}," App",[175,447,448],{"class":222},"\\",[175,450,451],{"class":181},"Http",[175,453,448],{"class":222},[175,455,456],{"class":181},"Controllers",[175,458,448],{"class":222},[175,460,461],{"class":181},"Api",[175,463,464],{"class":222},";\n",[175,466,467],{"class":177,"line":245},[175,468,436],{"emptyLinePlaceholder":435},[175,470,471,474,477,479,481,483,485,487,490],{"class":177,"line":301},[175,472,473],{"class":441},"use",[175,475,476],{"class":429}," Orion",[175,478,448],{"class":222},[175,480,451],{"class":429},[175,482,448],{"class":222},[175,484,456],{"class":429},[175,486,448],{"class":222},[175,488,489],{"class":429},"Controller",[175,491,464],{"class":222},[175,493,494],{"class":177,"line":307},[175,495,436],{"emptyLinePlaceholder":435},[175,497,498],{"class":177,"line":322},[175,499,500],{"class":215},"\u002F\u002F 这里的 options 字段是 Post 模型的 json\u002Fjsonb 字段\n",[175,502,503],{"class":177,"line":342},[175,504,505],{"class":215},"\u002F\u002F visible 和 key 字段是该 json\u002Fjsonb 字段内部的字段\n",[175,507,508,511,514,517],{"class":177,"line":348},[175,509,510],{"class":232},"class",[175,512,513],{"class":181}," PostsController",[175,515,516],{"class":232}," extends",[175,518,519],{"class":181}," Controller\n",[175,521,522],{"class":177,"line":362},[175,523,223],{"class":222},[175,525,526,529,532,536,539,541],{"class":177,"line":403},[175,527,528],{"class":232},"    public",[175,530,531],{"class":232}," function",[175,533,535],{"class":534},"s2Zo4"," filterableBy",[175,537,538],{"class":222},"()",[175,540,239],{"class":222},[175,542,543],{"class":441}," array\n",[175,545,546],{"class":177,"line":409},[175,547,548],{"class":222},"    {\n",[175,550,552,556,559,562,564,566],{"class":177,"line":551},13,[175,553,555],{"class":554},"s7zQu","        return",[175,557,558],{"class":222}," [",[175,560,561],{"class":222},"'",[175,563,263],{"class":185},[175,565,561],{"class":222},[175,567,568],{"class":222},"];\n",[175,570,572],{"class":177,"line":571},14,[175,573,574],{"class":222},"    }\n",[175,576,578],{"class":177,"line":577},15,[175,579,436],{"emptyLinePlaceholder":435},[175,581,583,585,587,590,592,594],{"class":177,"line":582},16,[175,584,528],{"class":232},[175,586,531],{"class":232},[175,588,589],{"class":534}," searchableBy",[175,591,538],{"class":222},[175,593,239],{"class":222},[175,595,543],{"class":441},[175,597,599],{"class":177,"line":598},17,[175,600,548],{"class":222},[175,602,604,606,608,611,613,615],{"class":177,"line":603},18,[175,605,555],{"class":554},[175,607,558],{"class":222},[175,609,610],{"class":222}," '",[175,612,377],{"class":185},[175,614,561],{"class":222},[175,616,568],{"class":222},[175,618,620],{"class":177,"line":619},19,[175,621,574],{"class":222},[175,623,625],{"class":177,"line":624},20,[175,626,436],{"emptyLinePlaceholder":435},[175,628,630,632,634,637,639,641],{"class":177,"line":629},21,[175,631,528],{"class":232},[175,633,531],{"class":232},[175,635,636],{"class":534}," sortableBy",[175,638,538],{"class":222},[175,640,239],{"class":222},[175,642,543],{"class":441},[175,644,646],{"class":177,"line":645},22,[175,647,548],{"class":222},[175,649,651,654,656,658,660,662],{"class":177,"line":650},23,[175,652,653],{"class":554},"         return",[175,655,558],{"class":222},[175,657,561],{"class":222},[175,659,377],{"class":185},[175,661,561],{"class":222},[175,663,568],{"class":222},[175,665,667],{"class":177,"line":666},24,[175,668,574],{"class":222},[175,670,672],{"class":177,"line":671},25,[175,673,412],{"class":222},[156,675,676],{"id":676},"嵌套关联搜索",[161,678,679],{},"在此之前，只能在一层深度的关联字段上进行搜索，例如：",[165,681,683],{"className":418,"code":682,"language":182,"meta":170,"style":170},"public function searchableBy() : array\n{\n    return ['user.name']; \u002F\u002F user 关联的 name 字段\n}\n",[172,684,685,700,704,724],{"__ignoreMap":170},[175,686,687,690,692,694,696,698],{"class":177,"line":178},[175,688,689],{"class":232},"public",[175,691,531],{"class":232},[175,693,589],{"class":534},[175,695,538],{"class":222},[175,697,239],{"class":222},[175,699,543],{"class":441},[175,701,702],{"class":177,"line":219},[175,703,223],{"class":222},[175,705,706,709,711,713,716,718,721],{"class":177,"line":226},[175,707,708],{"class":554},"    return",[175,710,558],{"class":222},[175,712,561],{"class":222},[175,714,715],{"class":185},"user.name",[175,717,561],{"class":222},[175,719,720],{"class":222},"];",[175,722,723],{"class":215}," \u002F\u002F user 关联的 name 字段\n",[175,725,726],{"class":177,"line":245},[175,727,412],{"class":222},[161,729,730],{},"本次发布支持在深层嵌套的关联上执行搜索：",[165,732,734],{"className":418,"code":733,"language":182,"meta":170,"style":170},"public function searchableBy() : array\n{\n    return ['user.name', 'user.location.address.postalcode']; \u002F\u002F 深层嵌套的 user.location.address 关联的 postalcode 字段\n}\n",[172,735,736,750,754,780],{"__ignoreMap":170},[175,737,738,740,742,744,746,748],{"class":177,"line":178},[175,739,689],{"class":232},[175,741,531],{"class":232},[175,743,589],{"class":534},[175,745,538],{"class":222},[175,747,239],{"class":222},[175,749,543],{"class":441},[175,751,752],{"class":177,"line":219},[175,753,223],{"class":222},[175,755,756,758,760,762,764,766,768,770,773,775,777],{"class":177,"line":226},[175,757,708],{"class":554},[175,759,558],{"class":222},[175,761,561],{"class":222},[175,763,715],{"class":185},[175,765,561],{"class":222},[175,767,268],{"class":222},[175,769,610],{"class":222},[175,771,772],{"class":185},"user.location.address.postalcode",[175,774,561],{"class":222},[175,776,720],{"class":222},[175,778,779],{"class":215}," \u002F\u002F 深层嵌套的 user.location.address 关联的 postalcode 字段\n",[175,781,782],{"class":177,"line":245},[175,783,412],{"class":222},[156,785,786],{"id":786},"钩子方法签名",[161,788,789],{},"现在，父实体会被传入关联控制器的钩子方法，例如：",[165,791,793],{"className":418,"code":792,"language":182,"meta":170,"style":170},"protected function afterSave(Request $request, Model $parentEntity, Model $entity)\n",[172,794,795],{"__ignoreMap":170},[175,796,797,800,802,805,808,811,814,817,819,822,824,827,829,831,833,836],{"class":177,"line":178},[175,798,799],{"class":232},"protected",[175,801,531],{"class":232},[175,803,804],{"class":534}," afterSave",[175,806,807],{"class":222},"(",[175,809,810],{"class":181},"Request",[175,812,813],{"class":222}," $",[175,815,816],{"class":429},"request",[175,818,268],{"class":222},[175,820,821],{"class":181}," Model",[175,823,813],{"class":222},[175,825,826],{"class":429},"parentEntity",[175,828,268],{"class":222},[175,830,821],{"class":181},[175,832,813],{"class":222},[175,834,835],{"class":429},"entity",[175,837,838],{"class":222},")\n",[156,840,841],{"id":841},"默认认证守卫解析",[161,843,844,845,848,849,852],{},"默认认证守卫现在从 ",[172,846,847],{},"orion.php"," 配置文件的 ",[172,850,851],{},"auth.guard"," 键解析。",[161,854,855,856,859],{},"如果你需要对认证守卫或用户解析进行更细粒度的控制，仍然可以在控制器上重写 ",[172,857,858],{},"resolveUser"," 方法。",[156,861,863,864,867,868,871],{"id":862},"支持-ilike-与-not-ilike-操作符","支持 ",[172,865,866],{},"ilike"," 与 ",[172,869,870],{},"not ilike"," 操作符",[165,873,875],{"className":206,"code":874,"language":208,"meta":170,"style":170},"\u002F\u002F (POST) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fposts\u002Fsearch\n{\n    \"filters\" : [\n        {\"field\" : \"title\", \"operator\" : \"ilike\", \"value\" : \"example post\"},\n    ]\n}\n",[172,876,877,881,885,897,951,955],{"__ignoreMap":170},[175,878,879],{"class":177,"line":178},[175,880,216],{"class":215},[175,882,883],{"class":177,"line":219},[175,884,223],{"class":222},[175,886,887,889,891,893,895],{"class":177,"line":226},[175,888,229],{"class":222},[175,890,233],{"class":232},[175,892,236],{"class":222},[175,894,239],{"class":222},[175,896,242],{"class":222},[175,898,899,901,903,905,907,909,911,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942,944,947,949],{"class":177,"line":245},[175,900,248],{"class":222},[175,902,236],{"class":222},[175,904,253],{"class":181},[175,906,236],{"class":222},[175,908,239],{"class":222},[175,910,260],{"class":222},[175,912,913],{"class":185},"title",[175,915,236],{"class":222},[175,917,268],{"class":222},[175,919,260],{"class":222},[175,921,273],{"class":181},[175,923,236],{"class":222},[175,925,239],{"class":222},[175,927,260],{"class":222},[175,929,866],{"class":185},[175,931,236],{"class":222},[175,933,268],{"class":222},[175,935,260],{"class":222},[175,937,291],{"class":181},[175,939,236],{"class":222},[175,941,239],{"class":222},[175,943,260],{"class":222},[175,945,946],{"class":185},"example post",[175,948,236],{"class":222},[175,950,400],{"class":222},[175,952,953],{"class":177,"line":301},[175,954,406],{"class":222},[175,956,957],{"class":177,"line":307},[175,958,412],{"class":222},[152,960,961],{"id":961},"升级指南",[161,963,964],{},"本指南介绍将 Laravel Orion 从 v1.x 升级到 v2.x 的过程。",[156,966,968],{"id":967},"要求-php-73","要求 PHP 7.3",[161,970,971],{},"最低 PHP 版本现在为 7.3.0。",[156,973,974],{"id":974},"更新依赖",[161,976,977,978,981],{},"在 ",[172,979,980],{},"composer.json"," 文件中更新以下依赖：",[983,984,985,994],"ul",{},[986,987,988,990,991],"li",{},[172,989,182],{}," 更新为 ",[172,992,993],{},">=7.3",[986,995,996,990,999],{},[172,997,998],{},"tailflow\u002Flaravel-orion",[172,1000,1001],{},"^2.0",[156,1003,1004],{"id":1004},"发布配置",[161,1006,1007,1008,1010],{},"本次发布引入了 ",[172,1009,847],{}," 配置文件，允许你自定义默认认证驱动，以及用于规范生成的 API 信息。",[161,1012,1013],{},"要发布配置，请运行以下命令：",[165,1015,1017],{"className":167,"code":1016,"language":169,"meta":170,"style":170},"php artisan vendor:publish --tag=orion-config\n",[172,1018,1019],{"__ignoreMap":170},[175,1020,1021,1023,1025,1028],{"class":177,"line":178},[175,1022,182],{"class":181},[175,1024,186],{"class":185},[175,1026,1027],{"class":185}," vendor:publish",[175,1029,1030],{"class":185}," --tag=orion-config\n",[156,1032,1033],{"id":1033},"白名单方法签名",[161,1035,1036,1037,1039],{},"以下方法已改为 ",[172,1038,689],{},"：",[983,1041,1042,1047,1052,1057,1062,1067],{},[986,1043,1044],{},[172,1045,1046],{},"exposedScopes",[986,1048,1049],{},[172,1050,1051],{},"filterableBy",[986,1053,1054],{},[172,1055,1056],{},"searchableBy",[986,1058,1059],{},[172,1060,1061],{},"sortableBy",[986,1063,1064],{},[172,1065,1066],{},"includes",[986,1068,1069],{},[172,1070,1071],{},"alwaysIncludes",[161,1073,1074],{},"如果你重写过其中任何方法，请相应地更新你的控制器。",[156,1076,786],{"id":1077},"钩子方法签名-1",[161,1079,1080,1081,1084],{},"从 2.0 版本开始，父实体会被传入钩子方法。如果你重写过任何钩子方法，请相应地更新你的",[1082,1083,24],"strong",{},"控制器。",[161,1086,1087],{},"示例如下：",[161,1089,1090],{},[1082,1091,1092],{},"2.0 之前",[165,1094,1096],{"className":418,"code":1095,"language":182,"meta":170,"style":170},"protected function afterSave(Request $request, Model $entity)\n",[172,1097,1098],{"__ignoreMap":170},[175,1099,1100,1102,1104,1106,1108,1110,1112,1114,1116,1118,1120,1122],{"class":177,"line":178},[175,1101,799],{"class":232},[175,1103,531],{"class":232},[175,1105,804],{"class":534},[175,1107,807],{"class":222},[175,1109,810],{"class":181},[175,1111,813],{"class":222},[175,1113,816],{"class":429},[175,1115,268],{"class":222},[175,1117,821],{"class":181},[175,1119,813],{"class":222},[175,1121,835],{"class":429},[175,1123,838],{"class":222},[161,1125,1126],{},[1082,1127,1128],{},"2.0 之后",[165,1130,1131],{"className":418,"code":792,"language":182,"meta":170,"style":170},[172,1132,1133],{"__ignoreMap":170},[175,1134,1135,1137,1139,1141,1143,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163,1165],{"class":177,"line":178},[175,1136,799],{"class":232},[175,1138,531],{"class":232},[175,1140,804],{"class":534},[175,1142,807],{"class":222},[175,1144,810],{"class":181},[175,1146,813],{"class":222},[175,1148,816],{"class":429},[175,1150,268],{"class":222},[175,1152,821],{"class":181},[175,1154,813],{"class":222},[175,1156,826],{"class":429},[175,1158,268],{"class":222},[175,1160,821],{"class":181},[175,1162,813],{"class":222},[175,1164,835],{"class":429},[175,1166,838],{"class":222},[1168,1169,1170],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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}",{"title":170,"searchDepth":178,"depth":219,"links":1172},[1173,1182],{"id":154,"depth":219,"text":154,"children":1174},[1175,1176,1177,1178,1179,1180],{"id":158,"depth":226,"text":159},{"id":199,"depth":226,"text":200},{"id":676,"depth":226,"text":676},{"id":786,"depth":226,"text":786},{"id":841,"depth":226,"text":841},{"id":862,"depth":226,"text":1181},"支持 ilike 与 not ilike 操作符",{"id":961,"depth":219,"text":961,"children":1183},[1184,1185,1186,1187,1188],{"id":967,"depth":226,"text":968},{"id":974,"depth":226,"text":974},{"id":1004,"depth":226,"text":1004},{"id":1033,"depth":226,"text":1033},{"id":1077,"depth":226,"text":786},"了解 Orion for Laravel 2.0 中的变更与新特性。","md",null,{},{"title":12,"description":1189},"q13jC-7SI3AbbniJ4RwxcYoDQmOC8xpIRVhOrb2l-r0",[1196,1198],{"title":10,"path":6,"stem":7,"description":1197,"children":-1},"欢迎阅读 Orion for Laravel 文档。",{"title":16,"path":17,"stem":18,"description":1199,"children":-1},"迈出使用 Orion 的第一步。",{"id":1201,"title":1202,"body":1203,"description":2095,"extension":1190,"links":1191,"meta":2096,"navigation":435,"path":2097,"seo":2098,"stem":2099,"__hash__":2100},"docs_en\u002F1.guide\u002F00.prologue.md","Prologue",{"type":149,"value":1204,"toc":2077},[1205,1209,1213,1216,1228,1236,1240,1243,1405,1408,1615,1619,1622,1666,1669,1721,1725,1728,1766,1770,1779,1785,1794,1878,1882,1885,1889,1892,1896,1902,1917,1921,1927,1930,1944,1948,1954,1980,1983,1986,1994,1997,2002,2032,2037,2075],[152,1206,1208],{"id":1207},"release-notes","Release Notes",[156,1210,1212],{"id":1211},"openapi-specifications-generation","OpenAPI Specifications Generation",[161,1214,1215],{},"Now you can generate OpenAPI specifications automatically for all Orion-powered endpoints, simply by running the following command:",[165,1217,1218],{"className":167,"code":168,"language":169,"meta":170,"style":170},[172,1219,1220],{"__ignoreMap":170},[175,1221,1222,1224,1226],{"class":177,"line":178},[175,1223,182],{"class":181},[175,1225,186],{"class":185},[175,1227,189],{"class":185},[161,1229,1230,1231,1235],{},"You can learn more about this feature in the ",[194,1232,1234],{"href":1233},"\u002Fguide\u002Fspecifications","Specifications"," section of this guide.",[156,1237,1239],{"id":1238},"json-fields-search","JSON Fields Search",[161,1241,1242],{},"The 2.0 release enables even greater search capabilities by introducing support for JSON fields.",[165,1244,1245],{"className":206,"code":207,"language":208,"meta":170,"style":170},[172,1246,1247,1251,1255,1267,1313,1317,1329,1345,1349,1361,1397,1401],{"__ignoreMap":170},[175,1248,1249],{"class":177,"line":178},[175,1250,216],{"class":215},[175,1252,1253],{"class":177,"line":219},[175,1254,223],{"class":222},[175,1256,1257,1259,1261,1263,1265],{"class":177,"line":226},[175,1258,229],{"class":222},[175,1260,233],{"class":232},[175,1262,236],{"class":222},[175,1264,239],{"class":222},[175,1266,242],{"class":222},[175,1268,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311],{"class":177,"line":245},[175,1270,248],{"class":222},[175,1272,236],{"class":222},[175,1274,253],{"class":181},[175,1276,236],{"class":222},[175,1278,239],{"class":222},[175,1280,260],{"class":222},[175,1282,263],{"class":185},[175,1284,236],{"class":222},[175,1286,268],{"class":222},[175,1288,260],{"class":222},[175,1290,273],{"class":181},[175,1292,236],{"class":222},[175,1294,239],{"class":222},[175,1296,260],{"class":222},[175,1298,282],{"class":185},[175,1300,236],{"class":222},[175,1302,268],{"class":222},[175,1304,260],{"class":222},[175,1306,291],{"class":181},[175,1308,236],{"class":222},[175,1310,239],{"class":222},[175,1312,298],{"class":222},[175,1314,1315],{"class":177,"line":301},[175,1316,304],{"class":222},[175,1318,1319,1321,1323,1325,1327],{"class":177,"line":307},[175,1320,229],{"class":222},[175,1322,312],{"class":232},[175,1324,236],{"class":222},[175,1326,239],{"class":222},[175,1328,319],{"class":222},[175,1330,1331,1333,1335,1337,1339,1341,1343],{"class":177,"line":322},[175,1332,325],{"class":222},[175,1334,291],{"class":181},[175,1336,236],{"class":222},[175,1338,239],{"class":222},[175,1340,260],{"class":222},[175,1342,336],{"class":185},[175,1344,339],{"class":222},[175,1346,1347],{"class":177,"line":342},[175,1348,345],{"class":222},[175,1350,1351,1353,1355,1357,1359],{"class":177,"line":348},[175,1352,229],{"class":222},[175,1354,353],{"class":232},[175,1356,236],{"class":222},[175,1358,239],{"class":222},[175,1360,242],{"class":222},[175,1362,1363,1365,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391,1393,1395],{"class":177,"line":362},[175,1364,248],{"class":222},[175,1366,236],{"class":222},[175,1368,253],{"class":181},[175,1370,236],{"class":222},[175,1372,239],{"class":222},[175,1374,260],{"class":222},[175,1376,377],{"class":185},[175,1378,236],{"class":222},[175,1380,268],{"class":222},[175,1382,260],{"class":222},[175,1384,386],{"class":181},[175,1386,236],{"class":222},[175,1388,239],{"class":222},[175,1390,260],{"class":222},[175,1392,395],{"class":185},[175,1394,236],{"class":222},[175,1396,400],{"class":222},[175,1398,1399],{"class":177,"line":403},[175,1400,406],{"class":222},[175,1402,1403],{"class":177,"line":409},[175,1404,412],{"class":222},[161,1406,1407],{},"To whitelist a field inside a json field, use arrow notation:",[165,1409,1411],{"className":418,"code":1410,"language":182,"meta":170,"style":170},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse Orion\\Http\\Controllers\\Controller;\n\n\u002F\u002F options field here is a json\u002Fjsonb field of the Post model\n\u002F\u002F visible and key fields are fields inside that json\u002Fjsonb field \nclass PostsController extends Controller\n{\n    public function filterableBy() : array\n    {\n        return ['options->visible'];\n    }\n\n    public function searchableBy() : array\n    {\n        return [ 'options->key'];\n    }\n\n    public function sortableBy() : array\n    {\n         return ['options->key'];\n    }\n}\n",[172,1412,1413,1419,1423,1443,1447,1467,1471,1476,1481,1491,1495,1509,1513,1527,1531,1535,1549,1553,1567,1571,1575,1589,1593,1607,1611],{"__ignoreMap":170},[175,1414,1415,1417],{"class":177,"line":178},[175,1416,426],{"class":222},[175,1418,430],{"class":429},[175,1420,1421],{"class":177,"line":219},[175,1422,436],{"emptyLinePlaceholder":435},[175,1424,1425,1427,1429,1431,1433,1435,1437,1439,1441],{"class":177,"line":226},[175,1426,442],{"class":441},[175,1428,445],{"class":181},[175,1430,448],{"class":222},[175,1432,451],{"class":181},[175,1434,448],{"class":222},[175,1436,456],{"class":181},[175,1438,448],{"class":222},[175,1440,461],{"class":181},[175,1442,464],{"class":222},[175,1444,1445],{"class":177,"line":245},[175,1446,436],{"emptyLinePlaceholder":435},[175,1448,1449,1451,1453,1455,1457,1459,1461,1463,1465],{"class":177,"line":301},[175,1450,473],{"class":441},[175,1452,476],{"class":429},[175,1454,448],{"class":222},[175,1456,451],{"class":429},[175,1458,448],{"class":222},[175,1460,456],{"class":429},[175,1462,448],{"class":222},[175,1464,489],{"class":429},[175,1466,464],{"class":222},[175,1468,1469],{"class":177,"line":307},[175,1470,436],{"emptyLinePlaceholder":435},[175,1472,1473],{"class":177,"line":322},[175,1474,1475],{"class":215},"\u002F\u002F options field here is a json\u002Fjsonb field of the Post model\n",[175,1477,1478],{"class":177,"line":342},[175,1479,1480],{"class":215},"\u002F\u002F visible and key fields are fields inside that json\u002Fjsonb field \n",[175,1482,1483,1485,1487,1489],{"class":177,"line":348},[175,1484,510],{"class":232},[175,1486,513],{"class":181},[175,1488,516],{"class":232},[175,1490,519],{"class":181},[175,1492,1493],{"class":177,"line":362},[175,1494,223],{"class":222},[175,1496,1497,1499,1501,1503,1505,1507],{"class":177,"line":403},[175,1498,528],{"class":232},[175,1500,531],{"class":232},[175,1502,535],{"class":534},[175,1504,538],{"class":222},[175,1506,239],{"class":222},[175,1508,543],{"class":441},[175,1510,1511],{"class":177,"line":409},[175,1512,548],{"class":222},[175,1514,1515,1517,1519,1521,1523,1525],{"class":177,"line":551},[175,1516,555],{"class":554},[175,1518,558],{"class":222},[175,1520,561],{"class":222},[175,1522,263],{"class":185},[175,1524,561],{"class":222},[175,1526,568],{"class":222},[175,1528,1529],{"class":177,"line":571},[175,1530,574],{"class":222},[175,1532,1533],{"class":177,"line":577},[175,1534,436],{"emptyLinePlaceholder":435},[175,1536,1537,1539,1541,1543,1545,1547],{"class":177,"line":582},[175,1538,528],{"class":232},[175,1540,531],{"class":232},[175,1542,589],{"class":534},[175,1544,538],{"class":222},[175,1546,239],{"class":222},[175,1548,543],{"class":441},[175,1550,1551],{"class":177,"line":598},[175,1552,548],{"class":222},[175,1554,1555,1557,1559,1561,1563,1565],{"class":177,"line":603},[175,1556,555],{"class":554},[175,1558,558],{"class":222},[175,1560,610],{"class":222},[175,1562,377],{"class":185},[175,1564,561],{"class":222},[175,1566,568],{"class":222},[175,1568,1569],{"class":177,"line":619},[175,1570,574],{"class":222},[175,1572,1573],{"class":177,"line":624},[175,1574,436],{"emptyLinePlaceholder":435},[175,1576,1577,1579,1581,1583,1585,1587],{"class":177,"line":629},[175,1578,528],{"class":232},[175,1580,531],{"class":232},[175,1582,636],{"class":534},[175,1584,538],{"class":222},[175,1586,239],{"class":222},[175,1588,543],{"class":441},[175,1590,1591],{"class":177,"line":645},[175,1592,548],{"class":222},[175,1594,1595,1597,1599,1601,1603,1605],{"class":177,"line":650},[175,1596,653],{"class":554},[175,1598,558],{"class":222},[175,1600,561],{"class":222},[175,1602,377],{"class":185},[175,1604,561],{"class":222},[175,1606,568],{"class":222},[175,1608,1609],{"class":177,"line":666},[175,1610,574],{"class":222},[175,1612,1613],{"class":177,"line":671},[175,1614,412],{"class":222},[156,1616,1618],{"id":1617},"nested-relations-search","Nested Relations Search",[161,1620,1621],{},"Previously, it was possible to search on relation fields one-level deep only, e.g.:",[165,1623,1625],{"className":418,"code":1624,"language":182,"meta":170,"style":170},"public function searchableBy() : array\n{\n    return ['user.name']; \u002F\u002F name field of the user relation\n}\n",[172,1626,1627,1641,1645,1662],{"__ignoreMap":170},[175,1628,1629,1631,1633,1635,1637,1639],{"class":177,"line":178},[175,1630,689],{"class":232},[175,1632,531],{"class":232},[175,1634,589],{"class":534},[175,1636,538],{"class":222},[175,1638,239],{"class":222},[175,1640,543],{"class":441},[175,1642,1643],{"class":177,"line":219},[175,1644,223],{"class":222},[175,1646,1647,1649,1651,1653,1655,1657,1659],{"class":177,"line":226},[175,1648,708],{"class":554},[175,1650,558],{"class":222},[175,1652,561],{"class":222},[175,1654,715],{"class":185},[175,1656,561],{"class":222},[175,1658,720],{"class":222},[175,1660,1661],{"class":215}," \u002F\u002F name field of the user relation\n",[175,1663,1664],{"class":177,"line":245},[175,1665,412],{"class":222},[161,1667,1668],{},"This release makes it possible to perform search on deeply nested relations:",[165,1670,1672],{"className":418,"code":1671,"language":182,"meta":170,"style":170},"public function searchableBy() : array\n{\n    return ['user.name', 'user.location.address.postalcode']; \u002F\u002F postalcode field of the deeply nested user.location.address relation\n}\n",[172,1673,1674,1688,1692,1717],{"__ignoreMap":170},[175,1675,1676,1678,1680,1682,1684,1686],{"class":177,"line":178},[175,1677,689],{"class":232},[175,1679,531],{"class":232},[175,1681,589],{"class":534},[175,1683,538],{"class":222},[175,1685,239],{"class":222},[175,1687,543],{"class":441},[175,1689,1690],{"class":177,"line":219},[175,1691,223],{"class":222},[175,1693,1694,1696,1698,1700,1702,1704,1706,1708,1710,1712,1714],{"class":177,"line":226},[175,1695,708],{"class":554},[175,1697,558],{"class":222},[175,1699,561],{"class":222},[175,1701,715],{"class":185},[175,1703,561],{"class":222},[175,1705,268],{"class":222},[175,1707,610],{"class":222},[175,1709,772],{"class":185},[175,1711,561],{"class":222},[175,1713,720],{"class":222},[175,1715,1716],{"class":215}," \u002F\u002F postalcode field of the deeply nested user.location.address relation\n",[175,1718,1719],{"class":177,"line":245},[175,1720,412],{"class":222},[156,1722,1724],{"id":1723},"hook-methods-signature","Hook Methods Signature",[161,1726,1727],{},"A parent entity is now passed into the hook methods of relationship controllers, e.g.:",[165,1729,1730],{"className":418,"code":792,"language":182,"meta":170,"style":170},[172,1731,1732],{"__ignoreMap":170},[175,1733,1734,1736,1738,1740,1742,1744,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764],{"class":177,"line":178},[175,1735,799],{"class":232},[175,1737,531],{"class":232},[175,1739,804],{"class":534},[175,1741,807],{"class":222},[175,1743,810],{"class":181},[175,1745,813],{"class":222},[175,1747,816],{"class":429},[175,1749,268],{"class":222},[175,1751,821],{"class":181},[175,1753,813],{"class":222},[175,1755,826],{"class":429},[175,1757,268],{"class":222},[175,1759,821],{"class":181},[175,1761,813],{"class":222},[175,1763,835],{"class":429},[175,1765,838],{"class":222},[156,1767,1769],{"id":1768},"default-auth-guard-resolution","Default Auth Guard Resolution",[161,1771,1772,1773,1775,1776,1778],{},"The default auth guard is now resolved from the ",[172,1774,847],{}," config's ",[172,1777,851],{}," key.",[161,1780,1781,1782,1784],{},"You can still override the ",[172,1783,858],{}," method on a controller, if you need granular control over the auth guard or user resolution.",[156,1786,1788,1790,1791,1793],{"id":1787},"ilike-and-not-ilike-operators-support",[172,1789,866],{}," and ",[172,1792,870],{}," Operators Support",[165,1795,1796],{"className":206,"code":874,"language":208,"meta":170,"style":170},[172,1797,1798,1802,1806,1818,1870,1874],{"__ignoreMap":170},[175,1799,1800],{"class":177,"line":178},[175,1801,216],{"class":215},[175,1803,1804],{"class":177,"line":219},[175,1805,223],{"class":222},[175,1807,1808,1810,1812,1814,1816],{"class":177,"line":226},[175,1809,229],{"class":222},[175,1811,233],{"class":232},[175,1813,236],{"class":222},[175,1815,239],{"class":222},[175,1817,242],{"class":222},[175,1819,1820,1822,1824,1826,1828,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1850,1852,1854,1856,1858,1860,1862,1864,1866,1868],{"class":177,"line":245},[175,1821,248],{"class":222},[175,1823,236],{"class":222},[175,1825,253],{"class":181},[175,1827,236],{"class":222},[175,1829,239],{"class":222},[175,1831,260],{"class":222},[175,1833,913],{"class":185},[175,1835,236],{"class":222},[175,1837,268],{"class":222},[175,1839,260],{"class":222},[175,1841,273],{"class":181},[175,1843,236],{"class":222},[175,1845,239],{"class":222},[175,1847,260],{"class":222},[175,1849,866],{"class":185},[175,1851,236],{"class":222},[175,1853,268],{"class":222},[175,1855,260],{"class":222},[175,1857,291],{"class":181},[175,1859,236],{"class":222},[175,1861,239],{"class":222},[175,1863,260],{"class":222},[175,1865,946],{"class":185},[175,1867,236],{"class":222},[175,1869,400],{"class":222},[175,1871,1872],{"class":177,"line":301},[175,1873,406],{"class":222},[175,1875,1876],{"class":177,"line":307},[175,1877,412],{"class":222},[152,1879,1881],{"id":1880},"upgrade-guide","Upgrade Guide",[161,1883,1884],{},"This guide covers the process of upgrading Laravel Orion from v1.x to v2.x.",[156,1886,1888],{"id":1887},"php-73-required","PHP 7.3 Required",[161,1890,1891],{},"The new minimum PHP version is now 7.3.0.",[156,1893,1895],{"id":1894},"updating-dependencies","Updating Dependencies",[161,1897,1898,1899,1901],{},"Update the following dependencies in your ",[172,1900,980],{}," file:",[983,1903,1904,1911],{},[986,1905,1906,1908,1909],{},[172,1907,182],{}," to ",[172,1910,993],{},[986,1912,1913,1908,1915],{},[172,1914,998],{},[172,1916,1001],{},[156,1918,1920],{"id":1919},"publishing-config","Publishing Config",[161,1922,1923,1924,1926],{},"The release introduces the ",[172,1925,847],{}," config file, allowing you to customize the default auth driver and information about the API for specifications generation.",[161,1928,1929],{},"To publish the config, run the following command:",[165,1931,1932],{"className":167,"code":1016,"language":169,"meta":170,"style":170},[172,1933,1934],{"__ignoreMap":170},[175,1935,1936,1938,1940,1942],{"class":177,"line":178},[175,1937,182],{"class":181},[175,1939,186],{"class":185},[175,1941,1027],{"class":185},[175,1943,1030],{"class":185},[156,1945,1947],{"id":1946},"whitelisting-methods-signature","Whitelisting Methods Signature",[161,1949,1950,1951,1953],{},"The following methods have been made ",[172,1952,689],{},":",[983,1955,1956,1960,1964,1968,1972,1976],{},[986,1957,1958],{},[172,1959,1046],{},[986,1961,1962],{},[172,1963,1051],{},[986,1965,1966],{},[172,1967,1056],{},[986,1969,1970],{},[172,1971,1061],{},[986,1973,1974],{},[172,1975,1066],{},[986,1977,1978],{},[172,1979,1071],{},[161,1981,1982],{},"Please update your controllers accordingly, should you have any of these methods overridden.",[156,1984,1724],{"id":1985},"hook-methods-signature-1",[161,1987,1988,1989,1993],{},"Starting with 2.0 release, a parent entity is passed into the hook methods. Please update your ",[1990,1991,1992],"em",{},"relationship"," controllers accordingly, should you have any hook methods overridden.",[161,1995,1996],{},"Here is an example:",[161,1998,1999],{},[1082,2000,2001],{},"Before 2.0",[165,2003,2004],{"className":418,"code":1095,"language":182,"meta":170,"style":170},[172,2005,2006],{"__ignoreMap":170},[175,2007,2008,2010,2012,2014,2016,2018,2020,2022,2024,2026,2028,2030],{"class":177,"line":178},[175,2009,799],{"class":232},[175,2011,531],{"class":232},[175,2013,804],{"class":534},[175,2015,807],{"class":222},[175,2017,810],{"class":181},[175,2019,813],{"class":222},[175,2021,816],{"class":429},[175,2023,268],{"class":222},[175,2025,821],{"class":181},[175,2027,813],{"class":222},[175,2029,835],{"class":429},[175,2031,838],{"class":222},[161,2033,2034],{},[1082,2035,2036],{},"After 2.0",[165,2038,2039],{"className":418,"code":792,"language":182,"meta":170,"style":170},[172,2040,2041],{"__ignoreMap":170},[175,2042,2043,2045,2047,2049,2051,2053,2055,2057,2059,2061,2063,2065,2067,2069,2071,2073],{"class":177,"line":178},[175,2044,799],{"class":232},[175,2046,531],{"class":232},[175,2048,804],{"class":534},[175,2050,807],{"class":222},[175,2052,810],{"class":181},[175,2054,813],{"class":222},[175,2056,816],{"class":429},[175,2058,268],{"class":222},[175,2060,821],{"class":181},[175,2062,813],{"class":222},[175,2064,826],{"class":429},[175,2066,268],{"class":222},[175,2068,821],{"class":181},[175,2070,813],{"class":222},[175,2072,835],{"class":429},[175,2074,838],{"class":222},[1168,2076,1170],{},{"title":170,"searchDepth":178,"depth":219,"links":2078},[2079,2088],{"id":1207,"depth":219,"text":1208,"children":2080},[2081,2082,2083,2084,2085,2086],{"id":1211,"depth":226,"text":1212},{"id":1238,"depth":226,"text":1239},{"id":1617,"depth":226,"text":1618},{"id":1723,"depth":226,"text":1724},{"id":1768,"depth":226,"text":1769},{"id":1787,"depth":226,"text":2087},"ilike and not ilike Operators Support",{"id":1880,"depth":219,"text":1881,"children":2089},[2090,2091,2092,2093,2094],{"id":1887,"depth":226,"text":1888},{"id":1894,"depth":226,"text":1895},{"id":1919,"depth":226,"text":1920},{"id":1946,"depth":226,"text":1947},{"id":1985,"depth":226,"text":1724},"Learn about changes and new features in Orion for Laravel 2.0.",{},"\u002Fguide\u002Fprologue",{"title":1202,"description":2095},"1.guide\u002F00.prologue","rImzujtRi5Rbqg306dcL2LQhj_Bq_ShPKR8e0fnQGbk",1784394462496]