[{"data":1,"prerenderedAt":8747},["ShallowReactive",2],{"navigation-zh":3,"navigation-v1":81,"\u002Fzh\u002Fguide\u002Frelationships":146,"\u002Fzh\u002Fguide\u002Frelationships-surround":4678,"\u002Fzh\u002Fguide\u002Frelationships-og":4683},[4,55,77],{"title":5,"path":6,"stem":7,"children":8},"指南","\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":24,"body":148,"description":4672,"extension":4673,"links":4674,"meta":4675,"navigation":187,"path":25,"seo":4676,"stem":26,"__hash__":4677},"docs_zh\u002Fzh\u002F1.guide\u002F04.relationships.md",{"type":149,"value":150,"toc":4643},"minimark",[151,155,159,392,395,399,418,438,456,485,488,491,1045,1048,1059,1219,1233,1379,1382,1385,1420,1435,1448,1454,1494,1499,1669,1692,1695,1698,1713,1745,1749,1788,1792,2172,2174,2180,2190,2195,2231,2234,2240,2246,2249,2252,2262,2295,2299,2338,2342,2794,2812,2815,2827,2841,2846,2860,2865,2912,2917,3076,3079,3084,3089,3108,3112,3154,3158,3256,3259,3268,3277,3282,3291,3295,3333,3337,3446,3449,3458,3469,3473,3511,3515,3624,3627,3637,3642,3646,3727,3730,3738,3741,3991,3994,4001,4303,4306,4313,4316,4461,4464,4522,4525,4630,4639],[152,153,154],"h2",{"id":154},"设置控制器",[156,157,158],"p",{},"定义模型关联控制器与定义模型控制器的方式非常相似。",[160,161,166],"pre",{"className":162,"code":163,"language":164,"meta":165,"style":165},"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\\RelationController;\n\nclass PostCommentsController extends RelationController\n{\n    \u002F**\n     * 模型的完全限定类名\n     *\u002F\n    protected $model = Post::class; \u002F\u002F 或 \"App\\Models\\Post\"\n\n    \u002F**\n     * 在 Post 模型上定义的关联名称\n     *\u002F\n    protected $relation = 'comments';\n}\n","php","",[167,168,169,182,189,219,224,243,266,271,287,293,300,306,312,341,346,351,357,362,386],"code",{"__ignoreMap":165},[170,171,174,178],"span",{"class":172,"line":173},"line",1,[170,175,177],{"class":176},"sMK4o","\u003C?",[170,179,181],{"class":180},"sTEyZ","php\n",[170,183,185],{"class":172,"line":184},2,[170,186,188],{"emptyLinePlaceholder":187},true,"\n",[170,190,192,196,200,203,206,208,211,213,216],{"class":172,"line":191},3,[170,193,195],{"class":194},"sbssI","namespace",[170,197,199],{"class":198},"sBMFI"," App",[170,201,202],{"class":176},"\\",[170,204,205],{"class":198},"Http",[170,207,202],{"class":176},[170,209,210],{"class":198},"Controllers",[170,212,202],{"class":176},[170,214,215],{"class":198},"Api",[170,217,218],{"class":176},";\n",[170,220,222],{"class":172,"line":221},4,[170,223,188],{"emptyLinePlaceholder":187},[170,225,227,230,232,234,236,238,241],{"class":172,"line":226},5,[170,228,229],{"class":194},"use",[170,231,199],{"class":180},[170,233,202],{"class":176},[170,235,94],{"class":180},[170,237,202],{"class":176},[170,239,240],{"class":180},"Post",[170,242,218],{"class":176},[170,244,246,248,251,253,255,257,259,261,264],{"class":172,"line":245},6,[170,247,229],{"class":194},[170,249,250],{"class":180}," Orion",[170,252,202],{"class":176},[170,254,205],{"class":180},[170,256,202],{"class":176},[170,258,210],{"class":180},[170,260,202],{"class":176},[170,262,263],{"class":180},"RelationController",[170,265,218],{"class":176},[170,267,269],{"class":172,"line":268},7,[170,270,188],{"emptyLinePlaceholder":187},[170,272,274,278,281,284],{"class":172,"line":273},8,[170,275,277],{"class":276},"spNyl","class",[170,279,280],{"class":198}," PostCommentsController",[170,282,283],{"class":276}," extends",[170,285,286],{"class":198}," RelationController\n",[170,288,290],{"class":172,"line":289},9,[170,291,292],{"class":176},"{\n",[170,294,296],{"class":172,"line":295},10,[170,297,299],{"class":298},"sHwdD","    \u002F**\n",[170,301,303],{"class":172,"line":302},11,[170,304,305],{"class":298},"     * 模型的完全限定类名\n",[170,307,309],{"class":172,"line":308},12,[170,310,311],{"class":298},"     *\u002F\n",[170,313,315,318,321,324,327,330,333,335,338],{"class":172,"line":314},13,[170,316,317],{"class":276},"    protected",[170,319,320],{"class":176}," $",[170,322,323],{"class":180},"model ",[170,325,326],{"class":176},"=",[170,328,329],{"class":198}," Post",[170,331,332],{"class":176},"::",[170,334,277],{"class":194},[170,336,337],{"class":176},";",[170,339,340],{"class":298}," \u002F\u002F 或 \"App\\Models\\Post\"\n",[170,342,344],{"class":172,"line":343},14,[170,345,188],{"emptyLinePlaceholder":187},[170,347,349],{"class":172,"line":348},15,[170,350,299],{"class":298},[170,352,354],{"class":172,"line":353},16,[170,355,356],{"class":298},"     * 在 Post 模型上定义的关联名称\n",[170,358,360],{"class":172,"line":359},17,[170,361,311],{"class":298},[170,363,365,367,369,372,374,377,381,384],{"class":172,"line":364},18,[170,366,317],{"class":276},[170,368,320],{"class":176},[170,370,371],{"class":180},"relation ",[170,373,326],{"class":176},[170,375,376],{"class":176}," '",[170,378,380],{"class":379},"sfazB","comments",[170,382,383],{"class":176},"'",[170,385,218],{"class":176},[170,387,389],{"class":172,"line":388},19,[170,390,391],{"class":176},"}\n",[156,393,394],{},"此时你无需关心不同的关联类型——所有类型的关联，其控制器的定义方式都是相同的。",[396,397,398],"h3",{"id":398},"可填充的中间表字段与类型转换",[156,400,401,402,405,406,409,410,413,414,417],{},"如果你为 ",[167,403,404],{},"belongsToMany"," 或 ",[167,407,408],{},"morphToMany"," 关联类型定义控制器，并且中间表上有额外字段，则需要注意两个额外的属性——",[167,411,412],{},"protected $pivotFillable"," 和 ",[167,415,416],{},"protected $pivotJson","。",[156,419,420,423,424,427,428,427,431,413,434,437],{},[167,421,422],{},"$pivotFillable"," 属性需要包含可通过 ",[167,425,426],{},"attach","、",[167,429,430],{},"sync",[167,432,433],{},"toggle",[167,435,436],{},"updatePivot"," 端点更新的中间表字段列表。",[156,439,440,443,444,451,452,455],{},[167,441,442],{},"$pivotJson"," 属性应包含中间表上需要自动与数组互相转换的 json 字段列表。如果你已在相关的 ",[445,446,450],"a",{"href":447,"rel":448},"https:\u002F\u002Flaravel.com\u002Fdocs\u002Feloquent-relationships#defining-custom-intermediate-table-models",[449],"nofollow","Pivot 模型","上定义了 ",[167,453,454],{},"$casts"," 属性，则可以跳过它。",[457,458,460,463],"note",{"icon":459},"i-lucide-lightbulb",[156,461,462],{},"要点回顾",[464,465,466,473,479],"ul",{},[467,468,469,470],"li",{},"模型关联控制器始终继承 ",[167,471,472],{},"Orion\\Http\\Controllers\\RelationController",[467,474,475,478],{},[167,476,477],{},"$model"," 属性设置为完全限定的模型类名",[467,480,481,484],{},[167,482,483],{},"$relation"," 属性设置为模型上定义的确切关联名称",[152,486,487],{"id":487},"设置路由",[156,489,490],{},"与控制器不同，每种关联类型的路由定义方式各不相同。",[160,492,494],{"className":162,"code":493,"language":164,"meta":165,"style":165},"\u003C?php\n\nuse Illuminate\\Support\\Facades\\Route;\nuse Orion\\Facades\\Orion;\nuse App\\Http\\Controllers\\ProfileImageController;\n...\n\nRoute::group(['as' => 'api.'], function() {\n    ...\n    Orion::hasOneResource('profiles', 'image', ProfileImageController::class);\n    Orion::hasManyResource('users', 'posts', UserPostsController::class);\n    Orion::belongsToResource('posts', 'user', PostUserController::class);\n    Orion::belongsToManyResource('users', 'roles', UserRolesController::class);\n    Orion::hasOneThroughResource('posts', 'meta', PostMetaController::class);\n    Orion::hasManyThroughResource('users', 'comments', UserCommentsController::class);\n    Orion::morphOneResource('posts', 'image', PostImageController::class);\n    Orion::morphManyResource('posts', 'comments', PostCommentsController::class);\n    Orion::morphToResource('images', 'post', ImagePostController::class);\n    Orion::morphToManyResource('posts', 'tags', PostTagsController::class);\n    Orion::morphedByManyResource('tags', 'posts', TagsPostsController::class);\n    ...\n});\n\n",[167,495,496,502,506,530,547,568,573,577,619,624,666,704,741,778,815,851,887,922,960,997,1034,1039],{"__ignoreMap":165},[170,497,498,500],{"class":172,"line":173},[170,499,177],{"class":176},[170,501,181],{"class":180},[170,503,504],{"class":172,"line":184},[170,505,188],{"emptyLinePlaceholder":187},[170,507,508,510,513,515,518,520,523,525,528],{"class":172,"line":191},[170,509,229],{"class":194},[170,511,512],{"class":180}," Illuminate",[170,514,202],{"class":176},[170,516,517],{"class":180},"Support",[170,519,202],{"class":176},[170,521,522],{"class":180},"Facades",[170,524,202],{"class":176},[170,526,527],{"class":180},"Route",[170,529,218],{"class":176},[170,531,532,534,536,538,540,542,545],{"class":172,"line":221},[170,533,229],{"class":194},[170,535,250],{"class":180},[170,537,202],{"class":176},[170,539,522],{"class":180},[170,541,202],{"class":176},[170,543,544],{"class":180},"Orion",[170,546,218],{"class":176},[170,548,549,551,553,555,557,559,561,563,566],{"class":172,"line":226},[170,550,229],{"class":194},[170,552,199],{"class":180},[170,554,202],{"class":176},[170,556,205],{"class":180},[170,558,202],{"class":176},[170,560,210],{"class":180},[170,562,202],{"class":176},[170,564,565],{"class":180},"ProfileImageController",[170,567,218],{"class":176},[170,569,570],{"class":172,"line":245},[170,571,572],{"class":176},"...\n",[170,574,575],{"class":172,"line":268},[170,576,188],{"emptyLinePlaceholder":187},[170,578,579,581,583,587,590,592,595,597,600,602,605,607,610,613,616],{"class":172,"line":273},[170,580,527],{"class":198},[170,582,332],{"class":176},[170,584,586],{"class":585},"s2Zo4","group",[170,588,589],{"class":176},"([",[170,591,383],{"class":176},[170,593,594],{"class":379},"as",[170,596,383],{"class":176},[170,598,599],{"class":176}," =>",[170,601,376],{"class":176},[170,603,604],{"class":379},"api.",[170,606,383],{"class":176},[170,608,609],{"class":176},"],",[170,611,612],{"class":276}," function",[170,614,615],{"class":176},"()",[170,617,618],{"class":176}," {\n",[170,620,621],{"class":172,"line":289},[170,622,623],{"class":176},"    ...\n",[170,625,626,629,631,634,637,639,642,644,647,649,652,654,656,659,661,663],{"class":172,"line":295},[170,627,628],{"class":198},"    Orion",[170,630,332],{"class":176},[170,632,633],{"class":585},"hasOneResource",[170,635,636],{"class":176},"(",[170,638,383],{"class":176},[170,640,641],{"class":379},"profiles",[170,643,383],{"class":176},[170,645,646],{"class":176},",",[170,648,376],{"class":176},[170,650,651],{"class":379},"image",[170,653,383],{"class":176},[170,655,646],{"class":176},[170,657,658],{"class":198}," ProfileImageController",[170,660,332],{"class":176},[170,662,277],{"class":194},[170,664,665],{"class":176},");\n",[170,667,668,670,672,675,677,679,682,684,686,688,691,693,695,698,700,702],{"class":172,"line":302},[170,669,628],{"class":198},[170,671,332],{"class":176},[170,673,674],{"class":585},"hasManyResource",[170,676,636],{"class":176},[170,678,383],{"class":176},[170,680,681],{"class":379},"users",[170,683,383],{"class":176},[170,685,646],{"class":176},[170,687,376],{"class":176},[170,689,690],{"class":379},"posts",[170,692,383],{"class":176},[170,694,646],{"class":176},[170,696,697],{"class":198}," UserPostsController",[170,699,332],{"class":176},[170,701,277],{"class":194},[170,703,665],{"class":176},[170,705,706,708,710,713,715,717,719,721,723,725,728,730,732,735,737,739],{"class":172,"line":308},[170,707,628],{"class":198},[170,709,332],{"class":176},[170,711,712],{"class":585},"belongsToResource",[170,714,636],{"class":176},[170,716,383],{"class":176},[170,718,690],{"class":379},[170,720,383],{"class":176},[170,722,646],{"class":176},[170,724,376],{"class":176},[170,726,727],{"class":379},"user",[170,729,383],{"class":176},[170,731,646],{"class":176},[170,733,734],{"class":198}," PostUserController",[170,736,332],{"class":176},[170,738,277],{"class":194},[170,740,665],{"class":176},[170,742,743,745,747,750,752,754,756,758,760,762,765,767,769,772,774,776],{"class":172,"line":314},[170,744,628],{"class":198},[170,746,332],{"class":176},[170,748,749],{"class":585},"belongsToManyResource",[170,751,636],{"class":176},[170,753,383],{"class":176},[170,755,681],{"class":379},[170,757,383],{"class":176},[170,759,646],{"class":176},[170,761,376],{"class":176},[170,763,764],{"class":379},"roles",[170,766,383],{"class":176},[170,768,646],{"class":176},[170,770,771],{"class":198}," UserRolesController",[170,773,332],{"class":176},[170,775,277],{"class":194},[170,777,665],{"class":176},[170,779,780,782,784,787,789,791,793,795,797,799,802,804,806,809,811,813],{"class":172,"line":343},[170,781,628],{"class":198},[170,783,332],{"class":176},[170,785,786],{"class":585},"hasOneThroughResource",[170,788,636],{"class":176},[170,790,383],{"class":176},[170,792,690],{"class":379},[170,794,383],{"class":176},[170,796,646],{"class":176},[170,798,376],{"class":176},[170,800,801],{"class":379},"meta",[170,803,383],{"class":176},[170,805,646],{"class":176},[170,807,808],{"class":198}," PostMetaController",[170,810,332],{"class":176},[170,812,277],{"class":194},[170,814,665],{"class":176},[170,816,817,819,821,824,826,828,830,832,834,836,838,840,842,845,847,849],{"class":172,"line":348},[170,818,628],{"class":198},[170,820,332],{"class":176},[170,822,823],{"class":585},"hasManyThroughResource",[170,825,636],{"class":176},[170,827,383],{"class":176},[170,829,681],{"class":379},[170,831,383],{"class":176},[170,833,646],{"class":176},[170,835,376],{"class":176},[170,837,380],{"class":379},[170,839,383],{"class":176},[170,841,646],{"class":176},[170,843,844],{"class":198}," UserCommentsController",[170,846,332],{"class":176},[170,848,277],{"class":194},[170,850,665],{"class":176},[170,852,853,855,857,860,862,864,866,868,870,872,874,876,878,881,883,885],{"class":172,"line":353},[170,854,628],{"class":198},[170,856,332],{"class":176},[170,858,859],{"class":585},"morphOneResource",[170,861,636],{"class":176},[170,863,383],{"class":176},[170,865,690],{"class":379},[170,867,383],{"class":176},[170,869,646],{"class":176},[170,871,376],{"class":176},[170,873,651],{"class":379},[170,875,383],{"class":176},[170,877,646],{"class":176},[170,879,880],{"class":198}," PostImageController",[170,882,332],{"class":176},[170,884,277],{"class":194},[170,886,665],{"class":176},[170,888,889,891,893,896,898,900,902,904,906,908,910,912,914,916,918,920],{"class":172,"line":359},[170,890,628],{"class":198},[170,892,332],{"class":176},[170,894,895],{"class":585},"morphManyResource",[170,897,636],{"class":176},[170,899,383],{"class":176},[170,901,690],{"class":379},[170,903,383],{"class":176},[170,905,646],{"class":176},[170,907,376],{"class":176},[170,909,380],{"class":379},[170,911,383],{"class":176},[170,913,646],{"class":176},[170,915,280],{"class":198},[170,917,332],{"class":176},[170,919,277],{"class":194},[170,921,665],{"class":176},[170,923,924,926,928,931,933,935,938,940,942,944,947,949,951,954,956,958],{"class":172,"line":364},[170,925,628],{"class":198},[170,927,332],{"class":176},[170,929,930],{"class":585},"morphToResource",[170,932,636],{"class":176},[170,934,383],{"class":176},[170,936,937],{"class":379},"images",[170,939,383],{"class":176},[170,941,646],{"class":176},[170,943,376],{"class":176},[170,945,946],{"class":379},"post",[170,948,383],{"class":176},[170,950,646],{"class":176},[170,952,953],{"class":198}," ImagePostController",[170,955,332],{"class":176},[170,957,277],{"class":194},[170,959,665],{"class":176},[170,961,962,964,966,969,971,973,975,977,979,981,984,986,988,991,993,995],{"class":172,"line":388},[170,963,628],{"class":198},[170,965,332],{"class":176},[170,967,968],{"class":585},"morphToManyResource",[170,970,636],{"class":176},[170,972,383],{"class":176},[170,974,690],{"class":379},[170,976,383],{"class":176},[170,978,646],{"class":176},[170,980,376],{"class":176},[170,982,983],{"class":379},"tags",[170,985,383],{"class":176},[170,987,646],{"class":176},[170,989,990],{"class":198}," PostTagsController",[170,992,332],{"class":176},[170,994,277],{"class":194},[170,996,665],{"class":176},[170,998,1000,1002,1004,1007,1009,1011,1013,1015,1017,1019,1021,1023,1025,1028,1030,1032],{"class":172,"line":999},20,[170,1001,628],{"class":198},[170,1003,332],{"class":176},[170,1005,1006],{"class":585},"morphedByManyResource",[170,1008,636],{"class":176},[170,1010,383],{"class":176},[170,1012,983],{"class":379},[170,1014,383],{"class":176},[170,1016,646],{"class":176},[170,1018,376],{"class":176},[170,1020,690],{"class":379},[170,1022,383],{"class":176},[170,1024,646],{"class":176},[170,1026,1027],{"class":198}," TagsPostsController",[170,1029,332],{"class":176},[170,1031,277],{"class":194},[170,1033,665],{"class":176},[170,1035,1037],{"class":172,"line":1036},21,[170,1038,623],{"class":176},[170,1040,1042],{"class":172,"line":1041},22,[170,1043,1044],{"class":176},"});\n",[396,1046,1047],{"id":1047},"软删除",[156,1049,1050,1051,1054,1055,1058],{},"如果你的关联模型使用了 ",[167,1052,1053],{},"SoftDeletes"," trait，并且你希望通过 API 暴露相同的功能，请在注册资源时调用 ",[167,1056,1057],{},"withSoftDeletes"," 方法。",[160,1060,1062],{"className":162,"code":1061,"language":164,"meta":165,"style":165},"\u003C?php\n\nuse Illuminate\\Support\\Facades\\Route;\nuse Orion\\Facades\\Orion;\nuse App\\Http\\Controllers\\UserPostsController;\n\nRoute::group(['as' => 'api.'], function() {\n    ...\n    Orion::hasManyResource('users', 'posts', UserPostsController::class)->withSoftDeletes();\n    ...\n});\n\n",[167,1063,1064,1070,1074,1094,1110,1131,1135,1167,1171,1211,1215],{"__ignoreMap":165},[170,1065,1066,1068],{"class":172,"line":173},[170,1067,177],{"class":176},[170,1069,181],{"class":180},[170,1071,1072],{"class":172,"line":184},[170,1073,188],{"emptyLinePlaceholder":187},[170,1075,1076,1078,1080,1082,1084,1086,1088,1090,1092],{"class":172,"line":191},[170,1077,229],{"class":194},[170,1079,512],{"class":180},[170,1081,202],{"class":176},[170,1083,517],{"class":180},[170,1085,202],{"class":176},[170,1087,522],{"class":180},[170,1089,202],{"class":176},[170,1091,527],{"class":180},[170,1093,218],{"class":176},[170,1095,1096,1098,1100,1102,1104,1106,1108],{"class":172,"line":221},[170,1097,229],{"class":194},[170,1099,250],{"class":180},[170,1101,202],{"class":176},[170,1103,522],{"class":180},[170,1105,202],{"class":176},[170,1107,544],{"class":180},[170,1109,218],{"class":176},[170,1111,1112,1114,1116,1118,1120,1122,1124,1126,1129],{"class":172,"line":226},[170,1113,229],{"class":194},[170,1115,199],{"class":180},[170,1117,202],{"class":176},[170,1119,205],{"class":180},[170,1121,202],{"class":176},[170,1123,210],{"class":180},[170,1125,202],{"class":176},[170,1127,1128],{"class":180},"UserPostsController",[170,1130,218],{"class":176},[170,1132,1133],{"class":172,"line":245},[170,1134,188],{"emptyLinePlaceholder":187},[170,1136,1137,1139,1141,1143,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163,1165],{"class":172,"line":268},[170,1138,527],{"class":198},[170,1140,332],{"class":176},[170,1142,586],{"class":585},[170,1144,589],{"class":176},[170,1146,383],{"class":176},[170,1148,594],{"class":379},[170,1150,383],{"class":176},[170,1152,599],{"class":176},[170,1154,376],{"class":176},[170,1156,604],{"class":379},[170,1158,383],{"class":176},[170,1160,609],{"class":176},[170,1162,612],{"class":276},[170,1164,615],{"class":176},[170,1166,618],{"class":176},[170,1168,1169],{"class":172,"line":273},[170,1170,623],{"class":176},[170,1172,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195,1197,1199,1201,1203,1206,1208],{"class":172,"line":289},[170,1174,628],{"class":198},[170,1176,332],{"class":176},[170,1178,674],{"class":585},[170,1180,636],{"class":176},[170,1182,383],{"class":176},[170,1184,681],{"class":379},[170,1186,383],{"class":176},[170,1188,646],{"class":176},[170,1190,376],{"class":176},[170,1192,690],{"class":379},[170,1194,383],{"class":176},[170,1196,646],{"class":176},[170,1198,697],{"class":198},[170,1200,332],{"class":176},[170,1202,277],{"class":194},[170,1204,1205],{"class":176},")->",[170,1207,1057],{"class":585},[170,1209,1210],{"class":176},"();\n",[170,1212,1213],{"class":172,"line":295},[170,1214,623],{"class":176},[170,1216,1217],{"class":172,"line":302},[170,1218,1044],{"class":176},[156,1220,1221,1222,413,1225,1228,1229,1232],{},"这会引入 ",[167,1223,1224],{},"restore",[167,1226,1227],{},"batchRestore"," 端点。要了解如何通过 API 永久删除资源（强制删除），请参阅相关的",[445,1230,40],{"href":1231},"\u002Fzh\u002Fguide\u002Fquery-parameters#%E8%BD%AF%E5%88%A0%E9%99%A4","一节。",[160,1234,1238],{"className":1235,"code":1236,"language":1237,"meta":165,"style":165},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","+--------+-----------+-------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------+-------------------------------------------------+\n| Domain | Method    | URI                                             | Name                                   | Action                                                                    | Middleware                                      |\n+--------+-----------+-------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------+-------------------------------------------------+\n...\n|        | POST      | api\u002Fusers\u002F{user}\u002Fposts\u002F{post}\u002Frestore           | api.users.relation.posts.restore       | App\\Http\\Controllers\\Api\\UserPostsController@restore                      | api                                             |\n|        | POST      | api\u002Fusers\u002F{user}\u002Fposts\u002Fbatch\u002Frestore            | api.users.relation.posts.batchRestore  | App\\Http\\Controllers\\Api\\UserPostsController@batchRestore                 | api                                             |\n","bash",[167,1239,1240,1245,1286,1290,1294,1343],{"__ignoreMap":165},[170,1241,1242],{"class":172,"line":173},[170,1243,1244],{"class":198},"+--------+-----------+-------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------+-------------------------------------------------+\n",[170,1246,1247,1250,1253,1256,1259,1262,1265,1268,1271,1274,1277,1280,1283],{"class":172,"line":184},[170,1248,1249],{"class":176},"|",[170,1251,1252],{"class":198}," Domain",[170,1254,1255],{"class":176}," |",[170,1257,1258],{"class":198}," Method",[170,1260,1261],{"class":176},"    |",[170,1263,1264],{"class":198}," URI",[170,1266,1267],{"class":176},"                                             |",[170,1269,1270],{"class":198}," Name",[170,1272,1273],{"class":176},"                                   |",[170,1275,1276],{"class":198}," Action",[170,1278,1279],{"class":176},"                                                                    |",[170,1281,1282],{"class":198}," Middleware",[170,1284,1285],{"class":176},"                                      |\n",[170,1287,1288],{"class":172,"line":191},[170,1289,1244],{"class":198},[170,1291,1292],{"class":172,"line":221},[170,1293,572],{"class":585},[170,1295,1296,1298,1301,1304,1307,1310,1313,1316,1319,1322,1325,1328,1331,1334,1337,1340],{"class":172,"line":226},[170,1297,1249],{"class":176},[170,1299,1300],{"class":176},"        |",[170,1302,1303],{"class":198}," POST",[170,1305,1306],{"class":176},"      |",[170,1308,1309],{"class":198}," api\u002Fusers\u002F",[170,1311,1312],{"class":379},"{user}",[170,1314,1315],{"class":198},"\u002Fposts\u002F",[170,1317,1318],{"class":379},"{post}",[170,1320,1321],{"class":198},"\u002Frestore",[170,1323,1324],{"class":176},"           |",[170,1326,1327],{"class":198}," api.users.relation.posts.restore",[170,1329,1330],{"class":176},"       |",[170,1332,1333],{"class":198}," App\\Http\\Controllers\\Api\\UserPostsController@restore",[170,1335,1336],{"class":176},"                      |",[170,1338,1339],{"class":198}," api",[170,1341,1342],{"class":176},"                                             |\n",[170,1344,1345,1347,1349,1351,1353,1355,1357,1360,1363,1366,1369,1372,1375,1377],{"class":172,"line":245},[170,1346,1249],{"class":176},[170,1348,1300],{"class":176},[170,1350,1303],{"class":198},[170,1352,1306],{"class":176},[170,1354,1309],{"class":198},[170,1356,1312],{"class":379},[170,1358,1359],{"class":198},"\u002Fposts\u002Fbatch\u002Frestore",[170,1361,1362],{"class":176},"            |",[170,1364,1365],{"class":198}," api.users.relation.posts.batchRestore",[170,1367,1368],{"class":176},"  |",[170,1370,1371],{"class":198}," App\\Http\\Controllers\\Api\\UserPostsController@batchRestore",[170,1373,1374],{"class":176},"                 |",[170,1376,1339],{"class":198},[170,1378,1342],{"class":176},[152,1380,1381],{"id":1381},"一对一",[156,1383,1384],{},"以下关联被视为一对一关联：",[464,1386,1387,1392,1397,1402,1412],{},[467,1388,1389],{},[167,1390,1391],{},"hasOne",[467,1393,1394],{},[167,1395,1396],{},"hasOneThrough",[467,1398,1399],{},[167,1400,1401],{},"morphOne",[467,1403,1404,1407,1408,1411],{},[167,1405,1406],{},"belongsTo","（",[167,1409,1410],{},"hasMany"," 关联的反向关联）",[467,1413,1414,1407,1417,1411],{},[167,1415,1416],{},"morphTo",[167,1418,1419],{},"morphMany",[156,1421,1422,1423,427,1426,427,1429,427,1432],{},"对于一对一关联，Orion 提供 4 个端点（即 CRUD 操作的端点）：",[167,1424,1425],{},"store",[167,1427,1428],{},"show",[167,1430,1431],{},"update",[167,1433,1434],{},"destroy",[1436,1437,1438],"warning",{},[156,1439,1440,413,1442,1444,1445,1447],{},[167,1441,1406],{},[167,1443,1416],{}," 关联不提供 ",[167,1446,1425],{}," 端点。",[156,1449,1450],{},[1451,1452,1453],"strong",{},"路由注册示例",[160,1455,1457],{"className":162,"code":1456,"language":164,"meta":165,"style":165},"Orion::hasOneResource('profiles', 'image' , ProfileImageController::class);\n",[167,1458,1459],{"__ignoreMap":165},[170,1460,1461,1463,1465,1467,1469,1471,1473,1475,1477,1479,1481,1483,1486,1488,1490,1492],{"class":172,"line":173},[170,1462,544],{"class":198},[170,1464,332],{"class":176},[170,1466,633],{"class":585},[170,1468,636],{"class":176},[170,1470,383],{"class":176},[170,1472,641],{"class":379},[170,1474,383],{"class":176},[170,1476,646],{"class":176},[170,1478,376],{"class":176},[170,1480,651],{"class":379},[170,1482,383],{"class":176},[170,1484,1485],{"class":176}," ,",[170,1487,658],{"class":198},[170,1489,332],{"class":176},[170,1491,277],{"class":194},[170,1493,665],{"class":176},[156,1495,1496],{},[1451,1497,1498],{},"可用端点示例",[160,1500,1502],{"className":1235,"code":1501,"language":1237,"meta":165,"style":165},"+-----------+-------------------------------------------------+------------------------------------------+---------------------------------------------------------------------------+\n| Method    | URI                                             | Name                                     | Action                                                                    |\n+-----------+-------------------------------------------------+------------------------------------------+---------------------------------------------------------------------------+\n| POST      | api\u002Fprofiles\u002F{profile}\u002Fimage                    | api.profiles.relation.image.store        | App\\Http\\Controllers\\Api\\ProfileImageController@store                     |\n| GET|HEAD  | api\u002Fprofiles\u002F{profile}\u002Fimage\u002F{image?}           | api.profiles.relation.image.show         | App\\Http\\Controllers\\Api\\ProfileImageController@show                      |\n| PATCH|PUT | api\u002Fprofiles\u002F{profile}\u002Fimage\u002F{image?}           | api.profiles.relation.image.update       | App\\Http\\Controllers\\Api\\ProfileImageController@update                    |\n| DELETE    | api\u002Fprofiles\u002F{profile}\u002Fimage\u002F{image?}           | api.profiles.relation.image.destroy      | App\\Http\\Controllers\\Api\\ProfileImageController@destroy                   |\n",[167,1503,1504,1509,1531,1535,1566,1604,1639],{"__ignoreMap":165},[170,1505,1506],{"class":172,"line":173},[170,1507,1508],{"class":198},"+-----------+-------------------------------------------------+------------------------------------------+---------------------------------------------------------------------------+\n",[170,1510,1511,1513,1515,1517,1519,1521,1523,1526,1528],{"class":172,"line":184},[170,1512,1249],{"class":176},[170,1514,1258],{"class":198},[170,1516,1261],{"class":176},[170,1518,1264],{"class":198},[170,1520,1267],{"class":176},[170,1522,1270],{"class":198},[170,1524,1525],{"class":176},"                                     |",[170,1527,1276],{"class":198},[170,1529,1530],{"class":176},"                                                                    |\n",[170,1532,1533],{"class":172,"line":191},[170,1534,1508],{"class":198},[170,1536,1537,1539,1541,1543,1546,1549,1552,1555,1558,1560,1563],{"class":172,"line":221},[170,1538,1249],{"class":176},[170,1540,1303],{"class":198},[170,1542,1306],{"class":176},[170,1544,1545],{"class":198}," api\u002Fprofiles\u002F",[170,1547,1548],{"class":379},"{profile}",[170,1550,1551],{"class":198},"\u002Fimage",[170,1553,1554],{"class":176},"                    |",[170,1556,1557],{"class":198}," api.profiles.relation.image.store",[170,1559,1300],{"class":176},[170,1561,1562],{"class":198}," App\\Http\\Controllers\\Api\\ProfileImageController@store",[170,1564,1565],{"class":176},"                     |\n",[170,1567,1568,1570,1573,1575,1578,1580,1582,1584,1587,1590,1592,1595,1598,1601],{"class":172,"line":226},[170,1569,1249],{"class":176},[170,1571,1572],{"class":198}," GET",[170,1574,1249],{"class":176},[170,1576,1577],{"class":198},"HEAD",[170,1579,1368],{"class":176},[170,1581,1545],{"class":198},[170,1583,1548],{"class":379},[170,1585,1586],{"class":198},"\u002Fimage\u002F",[170,1588,1589],{"class":379},"{image?}",[170,1591,1324],{"class":176},[170,1593,1594],{"class":198}," api.profiles.relation.image.show",[170,1596,1597],{"class":176},"         |",[170,1599,1600],{"class":198}," App\\Http\\Controllers\\Api\\ProfileImageController@show",[170,1602,1603],{"class":176},"                      |\n",[170,1605,1606,1608,1611,1613,1616,1618,1620,1622,1624,1626,1628,1631,1633,1636],{"class":172,"line":245},[170,1607,1249],{"class":176},[170,1609,1610],{"class":198}," PATCH",[170,1612,1249],{"class":176},[170,1614,1615],{"class":198},"PUT",[170,1617,1255],{"class":176},[170,1619,1545],{"class":198},[170,1621,1548],{"class":379},[170,1623,1586],{"class":198},[170,1625,1589],{"class":379},[170,1627,1324],{"class":176},[170,1629,1630],{"class":198}," api.profiles.relation.image.update",[170,1632,1330],{"class":176},[170,1634,1635],{"class":198}," App\\Http\\Controllers\\Api\\ProfileImageController@update",[170,1637,1638],{"class":176},"                    |\n",[170,1640,1641,1643,1646,1648,1650,1652,1654,1656,1658,1661,1663,1666],{"class":172,"line":268},[170,1642,1249],{"class":176},[170,1644,1645],{"class":198}," DELETE",[170,1647,1261],{"class":176},[170,1649,1545],{"class":198},[170,1651,1548],{"class":379},[170,1653,1586],{"class":198},[170,1655,1589],{"class":379},[170,1657,1324],{"class":176},[170,1659,1660],{"class":198}," api.profiles.relation.image.destroy",[170,1662,1306],{"class":176},[170,1664,1665],{"class":198}," App\\Http\\Controllers\\Api\\ProfileImageController@destroy",[170,1667,1668],{"class":176},"                   |\n",[457,1670,1671,1674],{"icon":459},[156,1672,1673],{},"注意最后一个参数被标记为可选。因为这是一对一关联，你可以在不提供关联键的情况下访问端点——Orion 会自动处理。",[156,1675,1676,1679,1681,427,1683,427,1685,427,1687,413,1689,1691],{},[1677,1678],"br",{},[1677,1680],{},[167,1682,1391],{},[167,1684,1396],{},[167,1686,1401],{},[167,1688,1406],{},[167,1690,1416],{}," 关联不需要提供关联资源的键。",[152,1693,1694],{"id":1694},"一对多",[156,1696,1697],{},"以下关联被视为一对多关联：",[464,1699,1700,1704,1709],{},[467,1701,1702],{},[167,1703,1410],{},[467,1705,1706],{},[167,1707,1708],{},"hasManyThrough",[467,1710,1711],{},[167,1712,1419],{},[156,1714,1715,1716,427,1719,427,1722,427,1724,427,1726,427,1728,427,1730,427,1733,427,1736,427,1739,427,1742],{},"对于一对多关联，Orion 提供 11 个端点（用于 CRUD 操作、搜索、关联和取消关联的端点）：",[167,1717,1718],{},"index",[167,1720,1721],{},"search",[167,1723,1425],{},[167,1725,1428],{},[167,1727,1431],{},[167,1729,1434],{},[167,1731,1732],{},"associate",[167,1734,1735],{},"dissociate",[167,1737,1738],{},"batchStore",[167,1740,1741],{},"batchUpdate",[167,1743,1744],{},"batchDestroy",[156,1746,1747],{},[1451,1748,1453],{},[160,1750,1752],{"className":162,"code":1751,"language":164,"meta":165,"style":165},"Orion::hasManyResource('users', 'posts' , UserPostsController::class);\n",[167,1753,1754],{"__ignoreMap":165},[170,1755,1756,1758,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778,1780,1782,1784,1786],{"class":172,"line":173},[170,1757,544],{"class":198},[170,1759,332],{"class":176},[170,1761,674],{"class":585},[170,1763,636],{"class":176},[170,1765,383],{"class":176},[170,1767,681],{"class":379},[170,1769,383],{"class":176},[170,1771,646],{"class":176},[170,1773,376],{"class":176},[170,1775,690],{"class":379},[170,1777,383],{"class":176},[170,1779,1485],{"class":176},[170,1781,697],{"class":198},[170,1783,332],{"class":176},[170,1785,277],{"class":194},[170,1787,665],{"class":176},[156,1789,1790],{},[1451,1791,1498],{},[160,1793,1795],{"className":1235,"code":1794,"language":1237,"meta":165,"style":165},"+-----------+-------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------+\n| Method    | URI                                             | Name                                   | Action                                                                    |\n+-----------+-------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------+\n| GET|HEAD  | api\u002Fusers\u002F{user}\u002Fposts                          | api.users.relation.posts.index         | App\\Http\\Controllers\\Api\\UserPostsController@index                        |\n| POST      | api\u002Fusers\u002F{user}\u002Fposts\u002Fsearch                   | api.users.relation.posts.search        | App\\Http\\Controllers\\Api\\UserPostsController@index                        |\n| POST      | api\u002Fusers\u002F{user}\u002Fposts                          | api.users.relation.posts.store         | App\\Http\\Controllers\\Api\\UserPostsController@store                        |\n| GET|HEAD  | api\u002Fusers\u002F{user}\u002Fposts\u002F{post}                   | api.users.relation.posts.show          | App\\Http\\Controllers\\Api\\UserPostsController@show                         |\n| PATCH     | api\u002Fusers\u002F{user}\u002Fposts\u002F{post}                   | api.users.relation.posts.update        | App\\Http\\Controllers\\Api\\UserPostsController@update                       |\n| PUT       | api\u002Fusers\u002F{user}\u002Fposts\u002F{post}                   | api.users.relation.posts.update        | App\\Http\\Controllers\\Api\\UserPostsController@update                       |\n| DELETE    | api\u002Fusers\u002F{user}\u002Fposts\u002F{post}                   | api.users.relation.posts.destroy       | App\\Http\\Controllers\\Api\\UserPostsController@destroy                      |\n| POST      | api\u002Fusers\u002F{user}\u002Fposts\u002Fassociate                | api.users.relation.posts.associate     | App\\Http\\Controllers\\Api\\UserPostsController@associate                    |\n| DELETE    | api\u002Fusers\u002F{user}\u002Fposts\u002F{post}\u002Fdissociate        | api.users.relation.posts.dissociate    | App\\Http\\Controllers\\Api\\UserPostsController@dissociate                   |\n| POST      | api\u002Fusers\u002F{user}\u002Fposts\u002Fbatch                    | api.users.relation.posts.batchStore    | App\\Http\\Controllers\\Api\\UserPostsController@batchStore                   |\n| PATCH     | api\u002Fusers\u002F{user}\u002Fposts\u002Fbatch                    | api.users.relation.posts.batchUpdate   | App\\Http\\Controllers\\Api\\UserPostsController@batchUpdate                  |\n| DELETE    | api\u002Fusers\u002F{user}\u002Fposts\u002Fbatch                    | api.users.relation.posts.batchDestroy  | App\\Http\\Controllers\\Api\\UserPostsController@batchDestroy                 |\n",[167,1796,1797,1802,1822,1826,1859,1886,1912,1946,1976,2003,2031,2059,2090,2117,2145],{"__ignoreMap":165},[170,1798,1799],{"class":172,"line":173},[170,1800,1801],{"class":198},"+-----------+-------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------+\n",[170,1803,1804,1806,1808,1810,1812,1814,1816,1818,1820],{"class":172,"line":184},[170,1805,1249],{"class":176},[170,1807,1258],{"class":198},[170,1809,1261],{"class":176},[170,1811,1264],{"class":198},[170,1813,1267],{"class":176},[170,1815,1270],{"class":198},[170,1817,1273],{"class":176},[170,1819,1276],{"class":198},[170,1821,1530],{"class":176},[170,1823,1824],{"class":172,"line":191},[170,1825,1801],{"class":198},[170,1827,1828,1830,1832,1834,1836,1838,1840,1842,1845,1848,1851,1853,1856],{"class":172,"line":221},[170,1829,1249],{"class":176},[170,1831,1572],{"class":198},[170,1833,1249],{"class":176},[170,1835,1577],{"class":198},[170,1837,1368],{"class":176},[170,1839,1309],{"class":198},[170,1841,1312],{"class":379},[170,1843,1844],{"class":198},"\u002Fposts",[170,1846,1847],{"class":176},"                          |",[170,1849,1850],{"class":198}," api.users.relation.posts.index",[170,1852,1597],{"class":176},[170,1854,1855],{"class":198}," App\\Http\\Controllers\\Api\\UserPostsController@index",[170,1857,1858],{"class":176},"                        |\n",[170,1860,1861,1863,1865,1867,1869,1871,1874,1877,1880,1882,1884],{"class":172,"line":226},[170,1862,1249],{"class":176},[170,1864,1303],{"class":198},[170,1866,1306],{"class":176},[170,1868,1309],{"class":198},[170,1870,1312],{"class":379},[170,1872,1873],{"class":198},"\u002Fposts\u002Fsearch",[170,1875,1876],{"class":176},"                   |",[170,1878,1879],{"class":198}," api.users.relation.posts.search",[170,1881,1300],{"class":176},[170,1883,1855],{"class":198},[170,1885,1858],{"class":176},[170,1887,1888,1890,1892,1894,1896,1898,1900,1902,1905,1907,1910],{"class":172,"line":245},[170,1889,1249],{"class":176},[170,1891,1303],{"class":198},[170,1893,1306],{"class":176},[170,1895,1309],{"class":198},[170,1897,1312],{"class":379},[170,1899,1844],{"class":198},[170,1901,1847],{"class":176},[170,1903,1904],{"class":198}," api.users.relation.posts.store",[170,1906,1597],{"class":176},[170,1908,1909],{"class":198}," App\\Http\\Controllers\\Api\\UserPostsController@store",[170,1911,1858],{"class":176},[170,1913,1914,1916,1918,1920,1922,1924,1926,1928,1930,1932,1934,1937,1940,1943],{"class":172,"line":268},[170,1915,1249],{"class":176},[170,1917,1572],{"class":198},[170,1919,1249],{"class":176},[170,1921,1577],{"class":198},[170,1923,1368],{"class":176},[170,1925,1309],{"class":198},[170,1927,1312],{"class":379},[170,1929,1315],{"class":198},[170,1931,1318],{"class":379},[170,1933,1876],{"class":176},[170,1935,1936],{"class":198}," api.users.relation.posts.show",[170,1938,1939],{"class":176},"          |",[170,1941,1942],{"class":198}," App\\Http\\Controllers\\Api\\UserPostsController@show",[170,1944,1945],{"class":176},"                         |\n",[170,1947,1948,1950,1952,1955,1957,1959,1961,1963,1965,1968,1970,1973],{"class":172,"line":273},[170,1949,1249],{"class":176},[170,1951,1610],{"class":198},[170,1953,1954],{"class":176},"     |",[170,1956,1309],{"class":198},[170,1958,1312],{"class":379},[170,1960,1315],{"class":198},[170,1962,1318],{"class":379},[170,1964,1876],{"class":176},[170,1966,1967],{"class":198}," api.users.relation.posts.update",[170,1969,1300],{"class":176},[170,1971,1972],{"class":198}," App\\Http\\Controllers\\Api\\UserPostsController@update",[170,1974,1975],{"class":176},"                       |\n",[170,1977,1978,1980,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001],{"class":172,"line":289},[170,1979,1249],{"class":176},[170,1981,1982],{"class":198}," PUT",[170,1984,1330],{"class":176},[170,1986,1309],{"class":198},[170,1988,1312],{"class":379},[170,1990,1315],{"class":198},[170,1992,1318],{"class":379},[170,1994,1876],{"class":176},[170,1996,1967],{"class":198},[170,1998,1300],{"class":176},[170,2000,1972],{"class":198},[170,2002,1975],{"class":176},[170,2004,2005,2007,2009,2011,2013,2015,2017,2019,2021,2024,2026,2029],{"class":172,"line":295},[170,2006,1249],{"class":176},[170,2008,1645],{"class":198},[170,2010,1261],{"class":176},[170,2012,1309],{"class":198},[170,2014,1312],{"class":379},[170,2016,1315],{"class":198},[170,2018,1318],{"class":379},[170,2020,1876],{"class":176},[170,2022,2023],{"class":198}," api.users.relation.posts.destroy",[170,2025,1330],{"class":176},[170,2027,2028],{"class":198}," App\\Http\\Controllers\\Api\\UserPostsController@destroy",[170,2030,1603],{"class":176},[170,2032,2033,2035,2037,2039,2041,2043,2046,2049,2052,2054,2057],{"class":172,"line":302},[170,2034,1249],{"class":176},[170,2036,1303],{"class":198},[170,2038,1306],{"class":176},[170,2040,1309],{"class":198},[170,2042,1312],{"class":379},[170,2044,2045],{"class":198},"\u002Fposts\u002Fassociate",[170,2047,2048],{"class":176},"                |",[170,2050,2051],{"class":198}," api.users.relation.posts.associate",[170,2053,1954],{"class":176},[170,2055,2056],{"class":198}," App\\Http\\Controllers\\Api\\UserPostsController@associate",[170,2058,1638],{"class":176},[170,2060,2061,2063,2065,2067,2069,2071,2073,2075,2078,2080,2083,2085,2088],{"class":172,"line":308},[170,2062,1249],{"class":176},[170,2064,1645],{"class":198},[170,2066,1261],{"class":176},[170,2068,1309],{"class":198},[170,2070,1312],{"class":379},[170,2072,1315],{"class":198},[170,2074,1318],{"class":379},[170,2076,2077],{"class":198},"\u002Fdissociate",[170,2079,1300],{"class":176},[170,2081,2082],{"class":198}," api.users.relation.posts.dissociate",[170,2084,1261],{"class":176},[170,2086,2087],{"class":198}," App\\Http\\Controllers\\Api\\UserPostsController@dissociate",[170,2089,1668],{"class":176},[170,2091,2092,2094,2096,2098,2100,2102,2105,2107,2110,2112,2115],{"class":172,"line":314},[170,2093,1249],{"class":176},[170,2095,1303],{"class":198},[170,2097,1306],{"class":176},[170,2099,1309],{"class":198},[170,2101,1312],{"class":379},[170,2103,2104],{"class":198},"\u002Fposts\u002Fbatch",[170,2106,1554],{"class":176},[170,2108,2109],{"class":198}," api.users.relation.posts.batchStore",[170,2111,1261],{"class":176},[170,2113,2114],{"class":198}," App\\Http\\Controllers\\Api\\UserPostsController@batchStore",[170,2116,1668],{"class":176},[170,2118,2119,2121,2123,2125,2127,2129,2131,2133,2136,2139,2142],{"class":172,"line":343},[170,2120,1249],{"class":176},[170,2122,1610],{"class":198},[170,2124,1954],{"class":176},[170,2126,1309],{"class":198},[170,2128,1312],{"class":379},[170,2130,2104],{"class":198},[170,2132,1554],{"class":176},[170,2134,2135],{"class":198}," api.users.relation.posts.batchUpdate",[170,2137,2138],{"class":176},"   |",[170,2140,2141],{"class":198}," App\\Http\\Controllers\\Api\\UserPostsController@batchUpdate",[170,2143,2144],{"class":176},"                  |\n",[170,2146,2147,2149,2151,2153,2155,2157,2159,2161,2164,2166,2169],{"class":172,"line":348},[170,2148,1249],{"class":176},[170,2150,1645],{"class":198},[170,2152,1261],{"class":176},[170,2154,1309],{"class":198},[170,2156,1312],{"class":379},[170,2158,2104],{"class":198},[170,2160,1554],{"class":176},[170,2162,2163],{"class":198}," api.users.relation.posts.batchDestroy",[170,2165,1368],{"class":176},[170,2167,2168],{"class":198}," App\\Http\\Controllers\\Api\\UserPostsController@batchDestroy",[170,2170,2171],{"class":176},"                 |\n",[396,2173,24],{"id":24},[156,2175,2176,2177,2179],{},"一对多关联资源提供 ",[167,2178,1732],{}," 端点，用于将关联模型与父模型建立关联。",[156,2181,2182,2183,2186,2187,2189],{},"该端点的请求载荷只有一个字段——",[167,2184,2185],{},"related_key","。在我们的示例中，",[167,2188,2185],{}," 是要与用户关联的文章的 ID。",[156,2191,2192],{},[1451,2193,2194],{},"请求示例：",[160,2196,2200],{"className":2197,"code":2198,"language":2199,"meta":165,"style":165},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F (POST) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Fposts\u002Fassociate\n{\n    \"related_key\" : 5\n}\n","json",[167,2201,2202,2207,2211,2227],{"__ignoreMap":165},[170,2203,2204],{"class":172,"line":173},[170,2205,2206],{"class":298},"\u002F\u002F (POST) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Fposts\u002Fassociate\n",[170,2208,2209],{"class":172,"line":184},[170,2210,292],{"class":176},[170,2212,2213,2216,2218,2221,2224],{"class":172,"line":191},[170,2214,2215],{"class":176},"    \"",[170,2217,2185],{"class":276},[170,2219,2220],{"class":176},"\"",[170,2222,2223],{"class":176}," :",[170,2225,2226],{"class":194}," 5\n",[170,2228,2229],{"class":172,"line":221},[170,2230,391],{"class":176},[396,2232,2233],{"id":2233},"取消关联",[156,2235,2236,2237,2239],{},"一对多关联资源还提供 ",[167,2238,1735],{}," 端点，用于解除关联模型与其父模型之间的关联。",[156,2241,2242,2243,2245],{},"该端点的请求没有载荷；不过，请注意上面示例路由中的 ",[167,2244,1318],{}," 路由参数——它是要与用户解除关联的文章的 ID。",[152,2247,2248],{"id":2248},"多对多",[156,2250,2251],{},"以下关联被视为多对多关联：",[464,2253,2254,2258],{},[467,2255,2256],{},[167,2257,404],{},[467,2259,2260],{},[167,2261,408],{},[156,2263,2264,2265,427,2267,427,2269,427,2271,427,2273,427,2275,427,2277,427,2279,427,2282,427,2284,427,2286,427,2289,427,2291,427,2293],{},"对于多对多关联，Orion 提供 14 个端点（用于 CRUD 操作、搜索、附加、分离、同步、切换和更新中间表的端点）：",[167,2266,1718],{},[167,2268,1721],{},[167,2270,1425],{},[167,2272,1428],{},[167,2274,1431],{},[167,2276,1434],{},[167,2278,426],{},[167,2280,2281],{},"detach",[167,2283,430],{},[167,2285,433],{},[167,2287,2288],{},"pivot",[167,2290,1738],{},[167,2292,1741],{},[167,2294,1744],{},[156,2296,2297],{},[1451,2298,1453],{},[160,2300,2302],{"className":162,"code":2301,"language":164,"meta":165,"style":165},"Orion::belongsToManyResource('users', 'roles' , UserRolesController::class);\n",[167,2303,2304],{"__ignoreMap":165},[170,2305,2306,2308,2310,2312,2314,2316,2318,2320,2322,2324,2326,2328,2330,2332,2334,2336],{"class":172,"line":173},[170,2307,544],{"class":198},[170,2309,332],{"class":176},[170,2311,749],{"class":585},[170,2313,636],{"class":176},[170,2315,383],{"class":176},[170,2317,681],{"class":379},[170,2319,383],{"class":176},[170,2321,646],{"class":176},[170,2323,376],{"class":176},[170,2325,764],{"class":379},[170,2327,383],{"class":176},[170,2329,1485],{"class":176},[170,2331,771],{"class":198},[170,2333,332],{"class":176},[170,2335,277],{"class":194},[170,2337,665],{"class":176},[156,2339,2340],{},[1451,2341,1498],{},[160,2343,2345],{"className":1235,"code":2344,"language":1237,"meta":165,"style":165},"+-----------+-------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------+\n| Method    | URI                                             | Name                                   | Action                                                                    |\n+-----------+-------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------+\n| GET|HEAD  | api\u002Fusers\u002F{user}\u002Froles                          | api.users.relation.roles.index         | App\\Http\\Controllers\\Api\\UserRolesController@index                        |\n| POST      | api\u002Fusers\u002F{user}\u002Froles\u002Fsearch                   | api.users.relation.roles.search        | App\\Http\\Controllers\\Api\\UserRolesController@index                        |\n| POST      | api\u002Fusers\u002F{user}\u002Froles                          | api.users.relation.roles.store         | App\\Http\\Controllers\\Api\\UserRolesController@store                        |\n| GET|HEAD  | api\u002Fusers\u002F{user}\u002Froles\u002F{role}                   | api.users.relation.roles.show          | App\\Http\\Controllers\\Api\\UserRolesController@show                         |\n| PATCH     | api\u002Fusers\u002F{user}\u002Froles\u002F{role}                   | api.users.relation.roles.update        | App\\Http\\Controllers\\Api\\UserRolesController@update                       |\n| PUT       | api\u002Fusers\u002F{user}\u002Froles\u002F{role}                   | api.users.relation.roles.update        | App\\Http\\Controllers\\Api\\UserRolesController@update                       |\n| DELETE    | api\u002Fusers\u002F{user}\u002Froles\u002F{role}                   | api.users.relation.roles.destroy       | App\\Http\\Controllers\\Api\\UserRolesController@destroy                      |\n| POST      | api\u002Fusers\u002F{user}\u002Froles\u002Fattach                   | api.users.relation.roles.attach        | App\\Http\\Controllers\\Api\\UserRolesController@attach                       |\n| DELETE    | api\u002Fusers\u002F{user}\u002Froles\u002Fdetach                   | api.users.relation.roles.detach        | App\\Http\\Controllers\\Api\\UserRolesController@detach                       |\n| PATCH     | api\u002Fusers\u002F{user}\u002Froles\u002Fsync                     | api.users.relation.roles.sync          | App\\Http\\Controllers\\Api\\UserRolesController@sync                         |\n| PATCH     | api\u002Fusers\u002F{user}\u002Froles\u002Ftoggle                   | api.users.relation.roles.toggle        | App\\Http\\Controllers\\Api\\UserRolesController@toggle                       |\n| PATCH     | api\u002Fusers\u002F{user}\u002Froles\u002F{role}\u002Fpivot             | api.users.relation.roles.pivot         | App\\Http\\Controllers\\Api\\UserRolesController@updatePivot                  |\n| POST      | api\u002Fusers\u002F{user}\u002Froles\u002Fbatch                    | api.users.relation.roles.batchStore    | App\\Http\\Controllers\\Api\\UserRolesController@batchStore                   |\n| PATCH     | api\u002Fusers\u002F{user}\u002Froles\u002Fbatch                    | api.users.relation.roles.batchUpdate   | App\\Http\\Controllers\\Api\\UserRolesController@batchUpdate                  |\n| DELETE    | api\u002Fusers\u002F{user}\u002Froles\u002Fbatch                    | api.users.relation.roles.batchDestroy  | App\\Http\\Controllers\\Api\\UserRolesController@batchDestroy                 |\n",[167,2346,2347,2351,2371,2375,2406,2432,2458,2492,2520,2546,2574,2601,2628,2656,2683,2715,2742,2768],{"__ignoreMap":165},[170,2348,2349],{"class":172,"line":173},[170,2350,1801],{"class":198},[170,2352,2353,2355,2357,2359,2361,2363,2365,2367,2369],{"class":172,"line":184},[170,2354,1249],{"class":176},[170,2356,1258],{"class":198},[170,2358,1261],{"class":176},[170,2360,1264],{"class":198},[170,2362,1267],{"class":176},[170,2364,1270],{"class":198},[170,2366,1273],{"class":176},[170,2368,1276],{"class":198},[170,2370,1530],{"class":176},[170,2372,2373],{"class":172,"line":191},[170,2374,1801],{"class":198},[170,2376,2377,2379,2381,2383,2385,2387,2389,2391,2394,2396,2399,2401,2404],{"class":172,"line":221},[170,2378,1249],{"class":176},[170,2380,1572],{"class":198},[170,2382,1249],{"class":176},[170,2384,1577],{"class":198},[170,2386,1368],{"class":176},[170,2388,1309],{"class":198},[170,2390,1312],{"class":379},[170,2392,2393],{"class":198},"\u002Froles",[170,2395,1847],{"class":176},[170,2397,2398],{"class":198}," api.users.relation.roles.index",[170,2400,1597],{"class":176},[170,2402,2403],{"class":198}," App\\Http\\Controllers\\Api\\UserRolesController@index",[170,2405,1858],{"class":176},[170,2407,2408,2410,2412,2414,2416,2418,2421,2423,2426,2428,2430],{"class":172,"line":226},[170,2409,1249],{"class":176},[170,2411,1303],{"class":198},[170,2413,1306],{"class":176},[170,2415,1309],{"class":198},[170,2417,1312],{"class":379},[170,2419,2420],{"class":198},"\u002Froles\u002Fsearch",[170,2422,1876],{"class":176},[170,2424,2425],{"class":198}," api.users.relation.roles.search",[170,2427,1300],{"class":176},[170,2429,2403],{"class":198},[170,2431,1858],{"class":176},[170,2433,2434,2436,2438,2440,2442,2444,2446,2448,2451,2453,2456],{"class":172,"line":245},[170,2435,1249],{"class":176},[170,2437,1303],{"class":198},[170,2439,1306],{"class":176},[170,2441,1309],{"class":198},[170,2443,1312],{"class":379},[170,2445,2393],{"class":198},[170,2447,1847],{"class":176},[170,2449,2450],{"class":198}," api.users.relation.roles.store",[170,2452,1597],{"class":176},[170,2454,2455],{"class":198}," App\\Http\\Controllers\\Api\\UserRolesController@store",[170,2457,1858],{"class":176},[170,2459,2460,2462,2464,2466,2468,2470,2472,2474,2477,2480,2482,2485,2487,2490],{"class":172,"line":268},[170,2461,1249],{"class":176},[170,2463,1572],{"class":198},[170,2465,1249],{"class":176},[170,2467,1577],{"class":198},[170,2469,1368],{"class":176},[170,2471,1309],{"class":198},[170,2473,1312],{"class":379},[170,2475,2476],{"class":198},"\u002Froles\u002F",[170,2478,2479],{"class":379},"{role}",[170,2481,1876],{"class":176},[170,2483,2484],{"class":198}," api.users.relation.roles.show",[170,2486,1939],{"class":176},[170,2488,2489],{"class":198}," App\\Http\\Controllers\\Api\\UserRolesController@show",[170,2491,1945],{"class":176},[170,2493,2494,2496,2498,2500,2502,2504,2506,2508,2510,2513,2515,2518],{"class":172,"line":273},[170,2495,1249],{"class":176},[170,2497,1610],{"class":198},[170,2499,1954],{"class":176},[170,2501,1309],{"class":198},[170,2503,1312],{"class":379},[170,2505,2476],{"class":198},[170,2507,2479],{"class":379},[170,2509,1876],{"class":176},[170,2511,2512],{"class":198}," api.users.relation.roles.update",[170,2514,1300],{"class":176},[170,2516,2517],{"class":198}," App\\Http\\Controllers\\Api\\UserRolesController@update",[170,2519,1975],{"class":176},[170,2521,2522,2524,2526,2528,2530,2532,2534,2536,2538,2540,2542,2544],{"class":172,"line":289},[170,2523,1249],{"class":176},[170,2525,1982],{"class":198},[170,2527,1330],{"class":176},[170,2529,1309],{"class":198},[170,2531,1312],{"class":379},[170,2533,2476],{"class":198},[170,2535,2479],{"class":379},[170,2537,1876],{"class":176},[170,2539,2512],{"class":198},[170,2541,1300],{"class":176},[170,2543,2517],{"class":198},[170,2545,1975],{"class":176},[170,2547,2548,2550,2552,2554,2556,2558,2560,2562,2564,2567,2569,2572],{"class":172,"line":295},[170,2549,1249],{"class":176},[170,2551,1645],{"class":198},[170,2553,1261],{"class":176},[170,2555,1309],{"class":198},[170,2557,1312],{"class":379},[170,2559,2476],{"class":198},[170,2561,2479],{"class":379},[170,2563,1876],{"class":176},[170,2565,2566],{"class":198}," api.users.relation.roles.destroy",[170,2568,1330],{"class":176},[170,2570,2571],{"class":198}," App\\Http\\Controllers\\Api\\UserRolesController@destroy",[170,2573,1603],{"class":176},[170,2575,2576,2578,2580,2582,2584,2586,2589,2591,2594,2596,2599],{"class":172,"line":302},[170,2577,1249],{"class":176},[170,2579,1303],{"class":198},[170,2581,1306],{"class":176},[170,2583,1309],{"class":198},[170,2585,1312],{"class":379},[170,2587,2588],{"class":198},"\u002Froles\u002Fattach",[170,2590,1876],{"class":176},[170,2592,2593],{"class":198}," api.users.relation.roles.attach",[170,2595,1300],{"class":176},[170,2597,2598],{"class":198}," App\\Http\\Controllers\\Api\\UserRolesController@attach",[170,2600,1975],{"class":176},[170,2602,2603,2605,2607,2609,2611,2613,2616,2618,2621,2623,2626],{"class":172,"line":308},[170,2604,1249],{"class":176},[170,2606,1645],{"class":198},[170,2608,1261],{"class":176},[170,2610,1309],{"class":198},[170,2612,1312],{"class":379},[170,2614,2615],{"class":198},"\u002Froles\u002Fdetach",[170,2617,1876],{"class":176},[170,2619,2620],{"class":198}," api.users.relation.roles.detach",[170,2622,1300],{"class":176},[170,2624,2625],{"class":198}," App\\Http\\Controllers\\Api\\UserRolesController@detach",[170,2627,1975],{"class":176},[170,2629,2630,2632,2634,2636,2638,2640,2643,2646,2649,2651,2654],{"class":172,"line":314},[170,2631,1249],{"class":176},[170,2633,1610],{"class":198},[170,2635,1954],{"class":176},[170,2637,1309],{"class":198},[170,2639,1312],{"class":379},[170,2641,2642],{"class":198},"\u002Froles\u002Fsync",[170,2644,2645],{"class":176},"                     |",[170,2647,2648],{"class":198}," api.users.relation.roles.sync",[170,2650,1939],{"class":176},[170,2652,2653],{"class":198}," App\\Http\\Controllers\\Api\\UserRolesController@sync",[170,2655,1945],{"class":176},[170,2657,2658,2660,2662,2664,2666,2668,2671,2673,2676,2678,2681],{"class":172,"line":343},[170,2659,1249],{"class":176},[170,2661,1610],{"class":198},[170,2663,1954],{"class":176},[170,2665,1309],{"class":198},[170,2667,1312],{"class":379},[170,2669,2670],{"class":198},"\u002Froles\u002Ftoggle",[170,2672,1876],{"class":176},[170,2674,2675],{"class":198}," api.users.relation.roles.toggle",[170,2677,1300],{"class":176},[170,2679,2680],{"class":198}," App\\Http\\Controllers\\Api\\UserRolesController@toggle",[170,2682,1975],{"class":176},[170,2684,2685,2687,2689,2691,2693,2695,2697,2699,2702,2705,2708,2710,2713],{"class":172,"line":348},[170,2686,1249],{"class":176},[170,2688,1610],{"class":198},[170,2690,1954],{"class":176},[170,2692,1309],{"class":198},[170,2694,1312],{"class":379},[170,2696,2476],{"class":198},[170,2698,2479],{"class":379},[170,2700,2701],{"class":198},"\u002Fpivot",[170,2703,2704],{"class":176},"             |",[170,2706,2707],{"class":198}," api.users.relation.roles.pivot",[170,2709,1597],{"class":176},[170,2711,2712],{"class":198}," App\\Http\\Controllers\\Api\\UserRolesController@updatePivot",[170,2714,2144],{"class":176},[170,2716,2717,2719,2721,2723,2725,2727,2730,2732,2735,2737,2740],{"class":172,"line":353},[170,2718,1249],{"class":176},[170,2720,1303],{"class":198},[170,2722,1306],{"class":176},[170,2724,1309],{"class":198},[170,2726,1312],{"class":379},[170,2728,2729],{"class":198},"\u002Froles\u002Fbatch",[170,2731,1554],{"class":176},[170,2733,2734],{"class":198}," api.users.relation.roles.batchStore",[170,2736,1261],{"class":176},[170,2738,2739],{"class":198}," App\\Http\\Controllers\\Api\\UserRolesController@batchStore",[170,2741,1668],{"class":176},[170,2743,2744,2746,2748,2750,2752,2754,2756,2758,2761,2763,2766],{"class":172,"line":359},[170,2745,1249],{"class":176},[170,2747,1610],{"class":198},[170,2749,1954],{"class":176},[170,2751,1309],{"class":198},[170,2753,1312],{"class":379},[170,2755,2729],{"class":198},[170,2757,1554],{"class":176},[170,2759,2760],{"class":198}," api.users.relation.roles.batchUpdate",[170,2762,2138],{"class":176},[170,2764,2765],{"class":198}," App\\Http\\Controllers\\Api\\UserRolesController@batchUpdate",[170,2767,2144],{"class":176},[170,2769,2770,2772,2774,2776,2778,2780,2782,2784,2787,2789,2792],{"class":172,"line":364},[170,2771,1249],{"class":176},[170,2773,1645],{"class":198},[170,2775,1261],{"class":176},[170,2777,1309],{"class":198},[170,2779,1312],{"class":379},[170,2781,2729],{"class":198},[170,2783,1554],{"class":176},[170,2785,2786],{"class":198}," api.users.relation.roles.batchDestroy",[170,2788,1368],{"class":176},[170,2790,2791],{"class":198}," App\\Http\\Controllers\\Api\\UserRolesController@batchDestroy",[170,2793,2171],{"class":176},[1436,2795,2796],{},[156,2797,2798,2799,2802,2803,427,2805,427,2807,413,2809,2811],{},"如果你的中间表上有额外字段，请不要忘记按照",[445,2800,398],{"href":2801},"\u002Fzh\u002Fguide\u002Frelationships#%E8%AE%BE%E7%BD%AE%E6%8E%A7%E5%88%B6%E5%99%A8","章节所述定义可填充的中间表字段，否则 ",[167,2804,426],{},[167,2806,430],{},[167,2808,433],{},[167,2810,436],{}," 端点可能无法按预期处理这些字段。",[396,2813,2814],{"id":2814},"附加",[156,2816,2817,2818,2820,2821,2826],{},"多对多关联资源提供 ",[167,2819,426],{}," 端点，用于将一个或多个关联模型附加到另一个模型。关于 Laravel 中关联模型附加\u002F分离的工作原理，请查看 Laravel 文档中的 ",[445,2822,2825],{"href":2823,"rel":2824},"https:\u002F\u002Flaravel.com\u002Fdocs\u002Feloquent-relationships#updating-many-to-many-relationships",[449],"Attaching \u002F Detaching"," 章节。",[156,2828,2829,2830,2833,2834,2837,2838,2840],{},"请求载荷由必填的 ",[167,2831,2832],{},"resources"," 字段和可选的 ",[167,2835,2836],{},"duplicates"," 字段组成。注意 ",[167,2839,2836],{}," 字段也可以作为查询参数提供。",[156,2842,2843,2845],{},[167,2844,2832],{}," 字段可以是数组或对象。如果是数组，数组项为要附加的关联模型的 ID。如果是对象，其键为关联模型的 ID，值为对象——其中包含附加关联模型时要设置的中间表字段。",[156,2847,2848,2849,2851,2852,2855,2856,2859],{},"默认情况下，",[167,2850,2836],{}," 参数为 ",[167,2853,2854],{},"false","。如果设置为 ",[167,2857,2858],{},"true","，多次附加同一个关联模型会导致中间表中出现重复条目。",[156,2861,2862],{},[1451,2863,2864],{},"请求示例（数组版本）：",[160,2866,2868],{"className":2197,"code":2867,"language":2199,"meta":165,"style":165},"\u002F\u002F (POST) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002Fattach\n{\n    \"resources\" : [3,4,7]\n}\n",[167,2869,2870,2875,2879,2908],{"__ignoreMap":165},[170,2871,2872],{"class":172,"line":173},[170,2873,2874],{"class":298},"\u002F\u002F (POST) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002Fattach\n",[170,2876,2877],{"class":172,"line":184},[170,2878,292],{"class":176},[170,2880,2881,2883,2885,2887,2889,2892,2895,2897,2900,2902,2905],{"class":172,"line":191},[170,2882,2215],{"class":176},[170,2884,2832],{"class":276},[170,2886,2220],{"class":176},[170,2888,2223],{"class":176},[170,2890,2891],{"class":176}," [",[170,2893,2894],{"class":194},"3",[170,2896,646],{"class":176},[170,2898,2899],{"class":194},"4",[170,2901,646],{"class":176},[170,2903,2904],{"class":194},"7",[170,2906,2907],{"class":176},"]\n",[170,2909,2910],{"class":172,"line":221},[170,2911,391],{"class":176},[156,2913,2914],{},[1451,2915,2916],{},"请求示例（对象版本）：",[160,2918,2920],{"className":2197,"code":2919,"language":2199,"meta":165,"style":165},"\u002F\u002F (POST) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002Fattach\n{\n    \"resources\" : {\n        \"3\" : {\n            \"example_pivot_field\" : \"value A\",\n            ...\n        },\n        \"4\" : {\n            \"example_pivot_field\" : \"value B\",\n            ...\n        },\n        \"7\" : {\n            \"example_pivot_field\" : \"value C\",\n            ...\n        }\n    }\n}\n",[167,2921,2922,2926,2930,2942,2955,2978,2983,2988,3000,3019,3023,3027,3039,3058,3062,3067,3072],{"__ignoreMap":165},[170,2923,2924],{"class":172,"line":173},[170,2925,2874],{"class":298},[170,2927,2928],{"class":172,"line":184},[170,2929,292],{"class":176},[170,2931,2932,2934,2936,2938,2940],{"class":172,"line":191},[170,2933,2215],{"class":176},[170,2935,2832],{"class":276},[170,2937,2220],{"class":176},[170,2939,2223],{"class":176},[170,2941,618],{"class":176},[170,2943,2944,2947,2949,2951,2953],{"class":172,"line":221},[170,2945,2946],{"class":176},"        \"",[170,2948,2894],{"class":198},[170,2950,2220],{"class":176},[170,2952,2223],{"class":176},[170,2954,618],{"class":176},[170,2956,2957,2960,2963,2965,2967,2970,2973,2975],{"class":172,"line":226},[170,2958,2959],{"class":176},"            \"",[170,2961,2962],{"class":194},"example_pivot_field",[170,2964,2220],{"class":176},[170,2966,2223],{"class":176},[170,2968,2969],{"class":176}," \"",[170,2971,2972],{"class":379},"value A",[170,2974,2220],{"class":176},[170,2976,2977],{"class":176},",\n",[170,2979,2980],{"class":172,"line":245},[170,2981,2982],{"class":180},"            ...\n",[170,2984,2985],{"class":172,"line":268},[170,2986,2987],{"class":176},"        },\n",[170,2989,2990,2992,2994,2996,2998],{"class":172,"line":273},[170,2991,2946],{"class":176},[170,2993,2899],{"class":198},[170,2995,2220],{"class":176},[170,2997,2223],{"class":176},[170,2999,618],{"class":176},[170,3001,3002,3004,3006,3008,3010,3012,3015,3017],{"class":172,"line":289},[170,3003,2959],{"class":176},[170,3005,2962],{"class":194},[170,3007,2220],{"class":176},[170,3009,2223],{"class":176},[170,3011,2969],{"class":176},[170,3013,3014],{"class":379},"value B",[170,3016,2220],{"class":176},[170,3018,2977],{"class":176},[170,3020,3021],{"class":172,"line":295},[170,3022,2982],{"class":180},[170,3024,3025],{"class":172,"line":302},[170,3026,2987],{"class":176},[170,3028,3029,3031,3033,3035,3037],{"class":172,"line":308},[170,3030,2946],{"class":176},[170,3032,2904],{"class":198},[170,3034,2220],{"class":176},[170,3036,2223],{"class":176},[170,3038,618],{"class":176},[170,3040,3041,3043,3045,3047,3049,3051,3054,3056],{"class":172,"line":314},[170,3042,2959],{"class":176},[170,3044,2962],{"class":194},[170,3046,2220],{"class":176},[170,3048,2223],{"class":176},[170,3050,2969],{"class":176},[170,3052,3053],{"class":379},"value C",[170,3055,2220],{"class":176},[170,3057,2977],{"class":176},[170,3059,3060],{"class":172,"line":343},[170,3061,2982],{"class":180},[170,3063,3064],{"class":172,"line":348},[170,3065,3066],{"class":176},"        }\n",[170,3068,3069],{"class":172,"line":353},[170,3070,3071],{"class":176},"    }\n",[170,3073,3074],{"class":172,"line":359},[170,3075,391],{"class":176},[396,3077,3078],{"id":3078},"分离",[156,3080,2817,3081,3083],{},[167,3082,2281],{}," 端点，用于将一个或多个关联模型从其附加的模型上分离。",[156,3085,3086,3087,417],{},"请求载荷只包含一个字段 ",[167,3088,2832],{},[156,3090,3091,3092,3094,3095,3097,3098,3100,3101,405,3104,3107],{},"与 ",[167,3093,426],{}," 端点类似，",[167,3096,2832],{}," 字段可以是数组或对象。此方法支持 ",[167,3099,2832],{}," 字段的对象表示，使前端能够以标准化的方式附加\u002F分离关联资源。你还可以选择在这些对象中存储额外数据，供 ",[167,3102,3103],{},"beforeDetach",[167,3105,3106],{},"afterDetach"," 钩子使用。",[156,3109,3110],{},[1451,3111,2864],{},[160,3113,3115],{"className":2197,"code":3114,"language":2199,"meta":165,"style":165},"\u002F\u002F (DELETE) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002Fdetach\n{\n    \"resources\" : [3,4,7]\n}\n",[167,3116,3117,3122,3126,3150],{"__ignoreMap":165},[170,3118,3119],{"class":172,"line":173},[170,3120,3121],{"class":298},"\u002F\u002F (DELETE) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002Fdetach\n",[170,3123,3124],{"class":172,"line":184},[170,3125,292],{"class":176},[170,3127,3128,3130,3132,3134,3136,3138,3140,3142,3144,3146,3148],{"class":172,"line":191},[170,3129,2215],{"class":176},[170,3131,2832],{"class":276},[170,3133,2220],{"class":176},[170,3135,2223],{"class":176},[170,3137,2891],{"class":176},[170,3139,2894],{"class":194},[170,3141,646],{"class":176},[170,3143,2899],{"class":194},[170,3145,646],{"class":176},[170,3147,2904],{"class":194},[170,3149,2907],{"class":176},[170,3151,3152],{"class":172,"line":221},[170,3153,391],{"class":176},[156,3155,3156],{},[1451,3157,2916],{},[160,3159,3161],{"className":2197,"code":3160,"language":2199,"meta":165,"style":165},"\u002F\u002F (DELETE) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002Fdetach\n{\n    \"resources\" : {\n        \"3\" : {},\n        \"4\" : {\n            \"some_field\" : \"some value\",\n            ...\n        },\n        \"7\" : {},\n    }\n}\n",[167,3162,3163,3167,3171,3183,3196,3208,3228,3232,3236,3248,3252],{"__ignoreMap":165},[170,3164,3165],{"class":172,"line":173},[170,3166,3121],{"class":298},[170,3168,3169],{"class":172,"line":184},[170,3170,292],{"class":176},[170,3172,3173,3175,3177,3179,3181],{"class":172,"line":191},[170,3174,2215],{"class":176},[170,3176,2832],{"class":276},[170,3178,2220],{"class":176},[170,3180,2223],{"class":176},[170,3182,618],{"class":176},[170,3184,3185,3187,3189,3191,3193],{"class":172,"line":221},[170,3186,2946],{"class":176},[170,3188,2894],{"class":198},[170,3190,2220],{"class":176},[170,3192,2223],{"class":176},[170,3194,3195],{"class":176}," {},\n",[170,3197,3198,3200,3202,3204,3206],{"class":172,"line":226},[170,3199,2946],{"class":176},[170,3201,2899],{"class":198},[170,3203,2220],{"class":176},[170,3205,2223],{"class":176},[170,3207,618],{"class":176},[170,3209,3210,3212,3215,3217,3219,3221,3224,3226],{"class":172,"line":245},[170,3211,2959],{"class":176},[170,3213,3214],{"class":194},"some_field",[170,3216,2220],{"class":176},[170,3218,2223],{"class":176},[170,3220,2969],{"class":176},[170,3222,3223],{"class":379},"some value",[170,3225,2220],{"class":176},[170,3227,2977],{"class":176},[170,3229,3230],{"class":172,"line":268},[170,3231,2982],{"class":180},[170,3233,3234],{"class":172,"line":273},[170,3235,2987],{"class":176},[170,3237,3238,3240,3242,3244,3246],{"class":172,"line":289},[170,3239,2946],{"class":176},[170,3241,2904],{"class":198},[170,3243,2220],{"class":176},[170,3245,2223],{"class":176},[170,3247,3195],{"class":176},[170,3249,3250],{"class":172,"line":295},[170,3251,3071],{"class":176},[170,3253,3254],{"class":172,"line":302},[170,3255,391],{"class":176},[396,3257,3258],{"id":3258},"同步",[156,3260,2817,3261,3263,3264,2826],{},[167,3262,430],{}," 端点，用于同步一个或多个关联模型与另一个模型之间的关联。关于 Laravel 中关联模型同步的工作原理，请查看 Laravel 文档中的 ",[445,3265,3267],{"href":2823,"rel":3266},[449],"Syncing Associations",[156,3269,2829,3270,2833,3272,2837,3275,2840],{},[167,3271,2832],{},[167,3273,3274],{},"detaching",[167,3276,3274],{},[156,3278,3279,3281],{},[167,3280,2832],{}," 字段可以是数组或对象。如果是数组，数组项为要同步的关联模型的 ID。如果是对象，其键为关联模型的 ID，值为对象——其中包含同步关联模型时要设置的中间表字段。",[156,3283,2848,3284,2851,3286,2855,3288,3290],{},[167,3285,3274],{},[167,3287,2858],{},[167,3289,2854],{},"，载荷中缺失但存在于中间表中的关联模型不会被分离。",[156,3292,3293],{},[1451,3294,2864],{},[160,3296,3298],{"className":2197,"code":3297,"language":2199,"meta":165,"style":165},"\u002F\u002F (PATCH) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002Fsync\n{\n    \"resources\" : [3,4]\n}\n",[167,3299,3300,3305,3309,3329],{"__ignoreMap":165},[170,3301,3302],{"class":172,"line":173},[170,3303,3304],{"class":298},"\u002F\u002F (PATCH) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002Fsync\n",[170,3306,3307],{"class":172,"line":184},[170,3308,292],{"class":176},[170,3310,3311,3313,3315,3317,3319,3321,3323,3325,3327],{"class":172,"line":191},[170,3312,2215],{"class":176},[170,3314,2832],{"class":276},[170,3316,2220],{"class":176},[170,3318,2223],{"class":176},[170,3320,2891],{"class":176},[170,3322,2894],{"class":194},[170,3324,646],{"class":176},[170,3326,2899],{"class":194},[170,3328,2907],{"class":176},[170,3330,3331],{"class":172,"line":221},[170,3332,391],{"class":176},[156,3334,3335],{},[1451,3336,2916],{},[160,3338,3340],{"className":2197,"code":3339,"language":2199,"meta":165,"style":165},"\u002F\u002F (PATCH) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002Fsync\n{\n    \"resources\" : {\n        \"3\" : {\n            \"example_pivot_field\" : \"value A\",\n            ...\n        },\n        \"4\" : {\n            \"example_pivot_field\" : \"value B\",\n            ...\n        },\n    }\n}\n",[167,3341,3342,3346,3350,3362,3374,3392,3396,3400,3412,3430,3434,3438,3442],{"__ignoreMap":165},[170,3343,3344],{"class":172,"line":173},[170,3345,3304],{"class":298},[170,3347,3348],{"class":172,"line":184},[170,3349,292],{"class":176},[170,3351,3352,3354,3356,3358,3360],{"class":172,"line":191},[170,3353,2215],{"class":176},[170,3355,2832],{"class":276},[170,3357,2220],{"class":176},[170,3359,2223],{"class":176},[170,3361,618],{"class":176},[170,3363,3364,3366,3368,3370,3372],{"class":172,"line":221},[170,3365,2946],{"class":176},[170,3367,2894],{"class":198},[170,3369,2220],{"class":176},[170,3371,2223],{"class":176},[170,3373,618],{"class":176},[170,3375,3376,3378,3380,3382,3384,3386,3388,3390],{"class":172,"line":226},[170,3377,2959],{"class":176},[170,3379,2962],{"class":194},[170,3381,2220],{"class":176},[170,3383,2223],{"class":176},[170,3385,2969],{"class":176},[170,3387,2972],{"class":379},[170,3389,2220],{"class":176},[170,3391,2977],{"class":176},[170,3393,3394],{"class":172,"line":245},[170,3395,2982],{"class":180},[170,3397,3398],{"class":172,"line":268},[170,3399,2987],{"class":176},[170,3401,3402,3404,3406,3408,3410],{"class":172,"line":273},[170,3403,2946],{"class":176},[170,3405,2899],{"class":198},[170,3407,2220],{"class":176},[170,3409,2223],{"class":176},[170,3411,618],{"class":176},[170,3413,3414,3416,3418,3420,3422,3424,3426,3428],{"class":172,"line":289},[170,3415,2959],{"class":176},[170,3417,2962],{"class":194},[170,3419,2220],{"class":176},[170,3421,2223],{"class":176},[170,3423,2969],{"class":176},[170,3425,3014],{"class":379},[170,3427,2220],{"class":176},[170,3429,2977],{"class":176},[170,3431,3432],{"class":172,"line":295},[170,3433,2982],{"class":180},[170,3435,3436],{"class":172,"line":302},[170,3437,2987],{"class":176},[170,3439,3440],{"class":172,"line":308},[170,3441,3071],{"class":176},[170,3443,3444],{"class":172,"line":314},[170,3445,391],{"class":176},[396,3447,3448],{"id":3448},"切换",[156,3450,2817,3451,3453,3454,2826],{},[167,3452,433],{}," 端点，用于「切换」一个或多个关联模型的附加状态。关于 Laravel 中关联模型「切换」的工作原理，请查看 Laravel 文档中的 ",[445,3455,3457],{"href":2823,"rel":3456},[449],"Toggling Associations",[156,3459,3086,3460,3462,3463,3465,3466,3468],{},[167,3461,2832],{},"。与 ",[167,3464,430],{}," 端点相同，",[167,3467,2832],{}," 字段可以是数组或对象。",[156,3470,3471],{},[1451,3472,2864],{},[160,3474,3476],{"className":2197,"code":3475,"language":2199,"meta":165,"style":165},"\u002F\u002F (PATCH) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002Ftoggle\n{\n    \"resources\" : [3,4]\n}\n",[167,3477,3478,3483,3487,3507],{"__ignoreMap":165},[170,3479,3480],{"class":172,"line":173},[170,3481,3482],{"class":298},"\u002F\u002F (PATCH) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002Ftoggle\n",[170,3484,3485],{"class":172,"line":184},[170,3486,292],{"class":176},[170,3488,3489,3491,3493,3495,3497,3499,3501,3503,3505],{"class":172,"line":191},[170,3490,2215],{"class":176},[170,3492,2832],{"class":276},[170,3494,2220],{"class":176},[170,3496,2223],{"class":176},[170,3498,2891],{"class":176},[170,3500,2894],{"class":194},[170,3502,646],{"class":176},[170,3504,2899],{"class":194},[170,3506,2907],{"class":176},[170,3508,3509],{"class":172,"line":221},[170,3510,391],{"class":176},[156,3512,3513],{},[1451,3514,2916],{},[160,3516,3518],{"className":2197,"code":3517,"language":2199,"meta":165,"style":165},"\u002F\u002F (PATCH) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002Ftoggle\n{\n    \"resources\" : {\n        \"3\" : {\n            \"example_pivot_field\" : \"value A\",\n            ...\n        },\n        \"4\" : {\n            \"example_pivot_field\" : \"value B\",\n            ...\n        },\n    }\n}\n",[167,3519,3520,3524,3528,3540,3552,3570,3574,3578,3590,3608,3612,3616,3620],{"__ignoreMap":165},[170,3521,3522],{"class":172,"line":173},[170,3523,3482],{"class":298},[170,3525,3526],{"class":172,"line":184},[170,3527,292],{"class":176},[170,3529,3530,3532,3534,3536,3538],{"class":172,"line":191},[170,3531,2215],{"class":176},[170,3533,2832],{"class":276},[170,3535,2220],{"class":176},[170,3537,2223],{"class":176},[170,3539,618],{"class":176},[170,3541,3542,3544,3546,3548,3550],{"class":172,"line":221},[170,3543,2946],{"class":176},[170,3545,2894],{"class":198},[170,3547,2220],{"class":176},[170,3549,2223],{"class":176},[170,3551,618],{"class":176},[170,3553,3554,3556,3558,3560,3562,3564,3566,3568],{"class":172,"line":226},[170,3555,2959],{"class":176},[170,3557,2962],{"class":194},[170,3559,2220],{"class":176},[170,3561,2223],{"class":176},[170,3563,2969],{"class":176},[170,3565,2972],{"class":379},[170,3567,2220],{"class":176},[170,3569,2977],{"class":176},[170,3571,3572],{"class":172,"line":245},[170,3573,2982],{"class":180},[170,3575,3576],{"class":172,"line":268},[170,3577,2987],{"class":176},[170,3579,3580,3582,3584,3586,3588],{"class":172,"line":273},[170,3581,2946],{"class":176},[170,3583,2899],{"class":198},[170,3585,2220],{"class":176},[170,3587,2223],{"class":176},[170,3589,618],{"class":176},[170,3591,3592,3594,3596,3598,3600,3602,3604,3606],{"class":172,"line":289},[170,3593,2959],{"class":176},[170,3595,2962],{"class":194},[170,3597,2220],{"class":176},[170,3599,2223],{"class":176},[170,3601,2969],{"class":176},[170,3603,3014],{"class":379},[170,3605,2220],{"class":176},[170,3607,2977],{"class":176},[170,3609,3610],{"class":172,"line":295},[170,3611,2982],{"class":180},[170,3613,3614],{"class":172,"line":302},[170,3615,2987],{"class":176},[170,3617,3618],{"class":172,"line":308},[170,3619,3071],{"class":176},[170,3621,3622],{"class":172,"line":314},[170,3623,391],{"class":176},[396,3625,3626],{"id":3626},"更新中间表",[156,3628,2817,3629,3631,3632,2826],{},[167,3630,2288],{}," 端点，用于更新某个关联模型的中间表记录。关于中间表记录如何更新，请查看 Laravel 文档中的 ",[445,3633,3636],{"href":3634,"rel":3635},"https:\u002F\u002Flaravel.com\u002Fdocs\u002Feloquent-relationships",[449],"Updating A Record On A Pivot Table",[156,3638,3086,3639,3641],{},[167,3640,2288],{},"。其属性是将为该关联模型更新的中间表字段。",[156,3643,3644],{},[1451,3645,2194],{},[160,3647,3649],{"className":2197,"code":3648,"language":2199,"meta":165,"style":165},"\u002F\u002F (PATCH) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002F{role}\u002Fpivot\n{\n    \"pivot\" : { \u002F\u002F 属性对应中间表中的列\n        \"example_pivot_field\" : \"updated value\",\n        \"another_pivot_field\" : \"new value\"\n        ...\n    }\n}\n",[167,3650,3651,3656,3660,3676,3695,3714,3719,3723],{"__ignoreMap":165},[170,3652,3653],{"class":172,"line":173},[170,3654,3655],{"class":298},"\u002F\u002F (PATCH) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002F{role}\u002Fpivot\n",[170,3657,3658],{"class":172,"line":184},[170,3659,292],{"class":176},[170,3661,3662,3664,3666,3668,3670,3673],{"class":172,"line":191},[170,3663,2215],{"class":176},[170,3665,2288],{"class":276},[170,3667,2220],{"class":176},[170,3669,2223],{"class":176},[170,3671,3672],{"class":176}," {",[170,3674,3675],{"class":298}," \u002F\u002F 属性对应中间表中的列\n",[170,3677,3678,3680,3682,3684,3686,3688,3691,3693],{"class":172,"line":221},[170,3679,2946],{"class":176},[170,3681,2962],{"class":198},[170,3683,2220],{"class":176},[170,3685,2223],{"class":176},[170,3687,2969],{"class":176},[170,3689,3690],{"class":379},"updated value",[170,3692,2220],{"class":176},[170,3694,2977],{"class":176},[170,3696,3697,3699,3702,3704,3706,3708,3711],{"class":172,"line":226},[170,3698,2946],{"class":176},[170,3700,3701],{"class":198},"another_pivot_field",[170,3703,2220],{"class":176},[170,3705,2223],{"class":176},[170,3707,2969],{"class":176},[170,3709,3710],{"class":379},"new value",[170,3712,3713],{"class":176},"\"\n",[170,3715,3716],{"class":172,"line":245},[170,3717,3718],{"class":180},"        ...\n",[170,3720,3721],{"class":172,"line":268},[170,3722,3071],{"class":176},[170,3724,3725],{"class":172,"line":273},[170,3726,391],{"class":176},[152,3728,3729],{"id":3729},"自定义键名",[156,3731,3732,3733,3737],{},"与",[445,3734,3736],{"href":3735},"\u002Fzh\u002Fguide\u002Fmodels#%E8%87%AA%E5%AE%9A%E4%B9%89%E9%94%AE%E5%90%8D","模型资源","一样，关联资源使用主键从数据库中获取资源。",[396,3739,3740],{"id":3740},"自定义关联资源键名",[160,3742,3744],{"className":162,"code":3743,"language":164,"meta":165,"style":165},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Team;\nuse Orion\\Http\\Controllers\\RelationController;\n\nclass TeamPostsController extends RelationController\n{\n    \u002F**\n     * 模型的完全限定类名\n     *\u002F\n    protected $model = Team::class; \u002F\u002F 或 \"App\\Models\\Team\"\n    \n    \u002F**\n     * 在 Post 模型上定义的关联名称\n     *\u002F\n    protected $relation = 'posts';\n\n    \u002F**\n     * 用于从数据库中获取资源的字段名称。\n     *\n     * @return string\n     *\u002F\n    protected function keyName(): string\n    {\n        return 'slug'; \u002F\u002F 这里的 \"slug\" 是 Post 模型（posts 关联）上的字段\n    }\n}\n",[167,3745,3746,3752,3756,3776,3780,3797,3817,3821,3832,3836,3840,3844,3848,3870,3875,3879,3883,3887,3905,3909,3913,3918,3923,3936,3941,3956,3962,3981,3986],{"__ignoreMap":165},[170,3747,3748,3750],{"class":172,"line":173},[170,3749,177],{"class":176},[170,3751,181],{"class":180},[170,3753,3754],{"class":172,"line":184},[170,3755,188],{"emptyLinePlaceholder":187},[170,3757,3758,3760,3762,3764,3766,3768,3770,3772,3774],{"class":172,"line":191},[170,3759,195],{"class":194},[170,3761,199],{"class":198},[170,3763,202],{"class":176},[170,3765,205],{"class":198},[170,3767,202],{"class":176},[170,3769,210],{"class":198},[170,3771,202],{"class":176},[170,3773,215],{"class":198},[170,3775,218],{"class":176},[170,3777,3778],{"class":172,"line":221},[170,3779,188],{"emptyLinePlaceholder":187},[170,3781,3782,3784,3786,3788,3790,3792,3795],{"class":172,"line":226},[170,3783,229],{"class":194},[170,3785,199],{"class":180},[170,3787,202],{"class":176},[170,3789,94],{"class":180},[170,3791,202],{"class":176},[170,3793,3794],{"class":180},"Team",[170,3796,218],{"class":176},[170,3798,3799,3801,3803,3805,3807,3809,3811,3813,3815],{"class":172,"line":245},[170,3800,229],{"class":194},[170,3802,250],{"class":180},[170,3804,202],{"class":176},[170,3806,205],{"class":180},[170,3808,202],{"class":176},[170,3810,210],{"class":180},[170,3812,202],{"class":176},[170,3814,263],{"class":180},[170,3816,218],{"class":176},[170,3818,3819],{"class":172,"line":268},[170,3820,188],{"emptyLinePlaceholder":187},[170,3822,3823,3825,3828,3830],{"class":172,"line":273},[170,3824,277],{"class":276},[170,3826,3827],{"class":198}," TeamPostsController",[170,3829,283],{"class":276},[170,3831,286],{"class":198},[170,3833,3834],{"class":172,"line":289},[170,3835,292],{"class":176},[170,3837,3838],{"class":172,"line":295},[170,3839,299],{"class":298},[170,3841,3842],{"class":172,"line":302},[170,3843,305],{"class":298},[170,3845,3846],{"class":172,"line":308},[170,3847,311],{"class":298},[170,3849,3850,3852,3854,3856,3858,3861,3863,3865,3867],{"class":172,"line":314},[170,3851,317],{"class":276},[170,3853,320],{"class":176},[170,3855,323],{"class":180},[170,3857,326],{"class":176},[170,3859,3860],{"class":198}," Team",[170,3862,332],{"class":176},[170,3864,277],{"class":194},[170,3866,337],{"class":176},[170,3868,3869],{"class":298}," \u002F\u002F 或 \"App\\Models\\Team\"\n",[170,3871,3872],{"class":172,"line":343},[170,3873,3874],{"class":180},"    \n",[170,3876,3877],{"class":172,"line":348},[170,3878,299],{"class":298},[170,3880,3881],{"class":172,"line":353},[170,3882,356],{"class":298},[170,3884,3885],{"class":172,"line":359},[170,3886,311],{"class":298},[170,3888,3889,3891,3893,3895,3897,3899,3901,3903],{"class":172,"line":364},[170,3890,317],{"class":276},[170,3892,320],{"class":176},[170,3894,371],{"class":180},[170,3896,326],{"class":176},[170,3898,376],{"class":176},[170,3900,690],{"class":379},[170,3902,383],{"class":176},[170,3904,218],{"class":176},[170,3906,3907],{"class":172,"line":388},[170,3908,188],{"emptyLinePlaceholder":187},[170,3910,3911],{"class":172,"line":999},[170,3912,299],{"class":298},[170,3914,3915],{"class":172,"line":1036},[170,3916,3917],{"class":298},"     * 用于从数据库中获取资源的字段名称。\n",[170,3919,3920],{"class":172,"line":1041},[170,3921,3922],{"class":298},"     *\n",[170,3924,3926,3929,3933],{"class":172,"line":3925},23,[170,3927,3928],{"class":298},"     * ",[170,3930,3932],{"class":3931},"svl4J","@return",[170,3934,3935],{"class":3931}," string\n",[170,3937,3939],{"class":172,"line":3938},24,[170,3940,311],{"class":298},[170,3942,3944,3946,3948,3951,3954],{"class":172,"line":3943},25,[170,3945,317],{"class":276},[170,3947,612],{"class":276},[170,3949,3950],{"class":585}," keyName",[170,3952,3953],{"class":176},"():",[170,3955,3935],{"class":194},[170,3957,3959],{"class":172,"line":3958},26,[170,3960,3961],{"class":176},"    {\n",[170,3963,3965,3969,3971,3974,3976,3978],{"class":172,"line":3964},27,[170,3966,3968],{"class":3967},"s7zQu","        return",[170,3970,376],{"class":176},[170,3972,3973],{"class":379},"slug",[170,3975,383],{"class":176},[170,3977,337],{"class":176},[170,3979,3980],{"class":298}," \u002F\u002F 这里的 \"slug\" 是 Post 模型（posts 关联）上的字段\n",[170,3982,3984],{"class":172,"line":3983},28,[170,3985,3071],{"class":176},[170,3987,3989],{"class":172,"line":3988},29,[170,3990,391],{"class":176},[396,3992,3993],{"id":3993},"自定义父资源键名",[156,3995,3996,3997,4000],{},"如果父资源和关联资源都使用自定义键名，你还需要重写 ",[167,3998,3999],{},"parentKeyName"," 方法：",[160,4002,4004],{"className":162,"code":4003,"language":164,"meta":165,"style":165},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Team;\nuse Orion\\Http\\Controllers\\RelationController;\n\nclass TeamPostsController extends RelationController\n{\n    \u002F**\n     * 模型的完全限定类名\n     *\u002F\n    protected $model = Team::class; \u002F\u002F 或 \"App\\Models\\Team\"\n    \n    \u002F**\n     * 在 Post 模型上定义的关联名称\n     *\u002F\n    protected $relation = 'posts';\n\n     \u002F**\n     * 用于从数据库中获取父资源的字段名称。\n     *\n     * @return string\n     *\u002F\n    protected function parentKeyName(): string\n    {\n        return 'short_name'; \u002F\u002F 这里的 \"short_name\" 是 Team 模型上的字段\n    }\n\n    \u002F**\n     * 用于从数据库中获取资源的字段名称。\n     *\n     * @return string\n     *\u002F\n    protected function keyName(): string\n    {\n        return 'slug'; \u002F\u002F 这里的 \"slug\" 是 Post 模型（posts 关联）上的字段\n    }\n}\n",[167,4005,4006,4012,4016,4036,4040,4056,4076,4080,4090,4094,4098,4102,4106,4126,4130,4134,4138,4142,4160,4164,4169,4174,4178,4186,4190,4203,4207,4223,4227,4231,4236,4241,4246,4255,4260,4273,4278,4293,4298],{"__ignoreMap":165},[170,4007,4008,4010],{"class":172,"line":173},[170,4009,177],{"class":176},[170,4011,181],{"class":180},[170,4013,4014],{"class":172,"line":184},[170,4015,188],{"emptyLinePlaceholder":187},[170,4017,4018,4020,4022,4024,4026,4028,4030,4032,4034],{"class":172,"line":191},[170,4019,195],{"class":194},[170,4021,199],{"class":198},[170,4023,202],{"class":176},[170,4025,205],{"class":198},[170,4027,202],{"class":176},[170,4029,210],{"class":198},[170,4031,202],{"class":176},[170,4033,215],{"class":198},[170,4035,218],{"class":176},[170,4037,4038],{"class":172,"line":221},[170,4039,188],{"emptyLinePlaceholder":187},[170,4041,4042,4044,4046,4048,4050,4052,4054],{"class":172,"line":226},[170,4043,229],{"class":194},[170,4045,199],{"class":180},[170,4047,202],{"class":176},[170,4049,94],{"class":180},[170,4051,202],{"class":176},[170,4053,3794],{"class":180},[170,4055,218],{"class":176},[170,4057,4058,4060,4062,4064,4066,4068,4070,4072,4074],{"class":172,"line":245},[170,4059,229],{"class":194},[170,4061,250],{"class":180},[170,4063,202],{"class":176},[170,4065,205],{"class":180},[170,4067,202],{"class":176},[170,4069,210],{"class":180},[170,4071,202],{"class":176},[170,4073,263],{"class":180},[170,4075,218],{"class":176},[170,4077,4078],{"class":172,"line":268},[170,4079,188],{"emptyLinePlaceholder":187},[170,4081,4082,4084,4086,4088],{"class":172,"line":273},[170,4083,277],{"class":276},[170,4085,3827],{"class":198},[170,4087,283],{"class":276},[170,4089,286],{"class":198},[170,4091,4092],{"class":172,"line":289},[170,4093,292],{"class":176},[170,4095,4096],{"class":172,"line":295},[170,4097,299],{"class":298},[170,4099,4100],{"class":172,"line":302},[170,4101,305],{"class":298},[170,4103,4104],{"class":172,"line":308},[170,4105,311],{"class":298},[170,4107,4108,4110,4112,4114,4116,4118,4120,4122,4124],{"class":172,"line":314},[170,4109,317],{"class":276},[170,4111,320],{"class":176},[170,4113,323],{"class":180},[170,4115,326],{"class":176},[170,4117,3860],{"class":198},[170,4119,332],{"class":176},[170,4121,277],{"class":194},[170,4123,337],{"class":176},[170,4125,3869],{"class":298},[170,4127,4128],{"class":172,"line":343},[170,4129,3874],{"class":180},[170,4131,4132],{"class":172,"line":348},[170,4133,299],{"class":298},[170,4135,4136],{"class":172,"line":353},[170,4137,356],{"class":298},[170,4139,4140],{"class":172,"line":359},[170,4141,311],{"class":298},[170,4143,4144,4146,4148,4150,4152,4154,4156,4158],{"class":172,"line":364},[170,4145,317],{"class":276},[170,4147,320],{"class":176},[170,4149,371],{"class":180},[170,4151,326],{"class":176},[170,4153,376],{"class":176},[170,4155,690],{"class":379},[170,4157,383],{"class":176},[170,4159,218],{"class":176},[170,4161,4162],{"class":172,"line":388},[170,4163,188],{"emptyLinePlaceholder":187},[170,4165,4166],{"class":172,"line":999},[170,4167,4168],{"class":298},"     \u002F**\n",[170,4170,4171],{"class":172,"line":1036},[170,4172,4173],{"class":298},"     * 用于从数据库中获取父资源的字段名称。\n",[170,4175,4176],{"class":172,"line":1041},[170,4177,3922],{"class":298},[170,4179,4180,4182,4184],{"class":172,"line":3925},[170,4181,3928],{"class":298},[170,4183,3932],{"class":3931},[170,4185,3935],{"class":3931},[170,4187,4188],{"class":172,"line":3938},[170,4189,311],{"class":298},[170,4191,4192,4194,4196,4199,4201],{"class":172,"line":3943},[170,4193,317],{"class":276},[170,4195,612],{"class":276},[170,4197,4198],{"class":585}," parentKeyName",[170,4200,3953],{"class":176},[170,4202,3935],{"class":194},[170,4204,4205],{"class":172,"line":3958},[170,4206,3961],{"class":176},[170,4208,4209,4211,4213,4216,4218,4220],{"class":172,"line":3964},[170,4210,3968],{"class":3967},[170,4212,376],{"class":176},[170,4214,4215],{"class":379},"short_name",[170,4217,383],{"class":176},[170,4219,337],{"class":176},[170,4221,4222],{"class":298}," \u002F\u002F 这里的 \"short_name\" 是 Team 模型上的字段\n",[170,4224,4225],{"class":172,"line":3983},[170,4226,3071],{"class":176},[170,4228,4229],{"class":172,"line":3988},[170,4230,188],{"emptyLinePlaceholder":187},[170,4232,4234],{"class":172,"line":4233},30,[170,4235,299],{"class":298},[170,4237,4239],{"class":172,"line":4238},31,[170,4240,3917],{"class":298},[170,4242,4244],{"class":172,"line":4243},32,[170,4245,3922],{"class":298},[170,4247,4249,4251,4253],{"class":172,"line":4248},33,[170,4250,3928],{"class":298},[170,4252,3932],{"class":3931},[170,4254,3935],{"class":3931},[170,4256,4258],{"class":172,"line":4257},34,[170,4259,311],{"class":298},[170,4261,4263,4265,4267,4269,4271],{"class":172,"line":4262},35,[170,4264,317],{"class":276},[170,4266,612],{"class":276},[170,4268,3950],{"class":585},[170,4270,3953],{"class":176},[170,4272,3935],{"class":194},[170,4274,4276],{"class":172,"line":4275},36,[170,4277,3961],{"class":176},[170,4279,4281,4283,4285,4287,4289,4291],{"class":172,"line":4280},37,[170,4282,3968],{"class":3967},[170,4284,376],{"class":176},[170,4286,3973],{"class":379},[170,4288,383],{"class":176},[170,4290,337],{"class":176},[170,4292,3980],{"class":298},[170,4294,4296],{"class":172,"line":4295},38,[170,4297,3071],{"class":176},[170,4299,4301],{"class":172,"line":4300},39,[170,4302,391],{"class":176},[152,4304,4305],{"id":4305},"自定义查询",[156,4307,3732,4308,4312],{},[445,4309,4311],{"href":4310},"\u002Fzh\u002Fguide\u002Fmodels#%E8%87%AA%E5%AE%9A%E4%B9%89%E6%9F%A5%E8%AF%A2","模型控制器","一样，你可以为每个端点重新定义 Eloquent 查询。唯一的主要区别在于：关联控制器中的每个端点还提供用于获取关联父模型的 \"build\" 和 \"run\" 方法。",[396,4314,4315],{"id":4315},"标准操作方法",[4317,4318,4319,4344],"table",{},[4320,4321,4322],"thead",{},[4323,4324,4325,4329,4332,4335,4338,4341],"tr",{},[4326,4327,4328],"th",{},"方法",[4326,4330,4331],{},"构建（父级）",[4326,4333,4334],{},"运行（父级）",[4326,4336,4337],{},"构建",[4326,4339,4340],{},"运行",[4326,4342,4343],{},"执行",[4345,4346,4347,4367,4386,4404,4423,4442],"tbody",{},[4323,4348,4349,4352,4355,4358,4361,4364],{},[4350,4351,1718],"td",{},[4350,4353,4354],{},"buildIndexParentFetchQuery",[4350,4356,4357],{},"runIndexParentFetchQuery",[4350,4359,4360],{},"buildIndexFetchQuery",[4350,4362,4363],{},"runIndexFetchQuery",[4350,4365,4366],{},"-",[4323,4368,4369,4371,4374,4377,4380,4383],{},[4350,4370,1425],{},[4350,4372,4373],{},"buildStoreParentFetchQuery",[4350,4375,4376],{},"runStoreParentFetchQuery",[4350,4378,4379],{},"buildStoreFetchQuery",[4350,4381,4382],{},"runStoreFetchQuery",[4350,4384,4385],{},"performStore",[4323,4387,4388,4390,4393,4396,4399,4402],{},[4350,4389,1428],{},[4350,4391,4392],{},"buildShowParentFetchQuery",[4350,4394,4395],{},"runShowParentFetchQuery",[4350,4397,4398],{},"buildShowFetchQuery",[4350,4400,4401],{},"runShowFetchQuery",[4350,4403,4366],{},[4323,4405,4406,4408,4411,4414,4417,4420],{},[4350,4407,1431],{},[4350,4409,4410],{},"buildUpdateParentFetchQuery",[4350,4412,4413],{},"runUpdateParentFetchQuery",[4350,4415,4416],{},"buildUpdateFetchQuery",[4350,4418,4419],{},"runUpdateFetchQuery",[4350,4421,4422],{},"performUpdate",[4323,4424,4425,4427,4430,4433,4436,4439],{},[4350,4426,1434],{},[4350,4428,4429],{},"buildDestroyParentFetchQuery",[4350,4431,4432],{},"runDestroyParentFetchQuery",[4350,4434,4435],{},"buildDestroyFetchQuery",[4350,4437,4438],{},"runDestroyFetchQuery",[4350,4440,4441],{},"performDestroy",[4323,4443,4444,4446,4449,4452,4455,4458],{},[4350,4445,1224],{},[4350,4447,4448],{},"buildRestoreParentFetchQuery",[4350,4450,4451],{},"runRestoreParentFetchQuery",[4350,4453,4454],{},"buildRestoreFetchQuery",[4350,4456,4457],{},"runRestoreFetchQuery",[4350,4459,4460],{},"performRestore",[396,4462,4463],{"id":4463},"一对多操作方法",[4317,4465,4466,4482],{},[4320,4467,4468],{},[4323,4469,4470,4472,4474,4476,4478,4480],{},[4326,4471,4328],{},[4326,4473,4331],{},[4326,4475,4334],{},[4326,4477,4337],{},[4326,4479,4340],{},[4326,4481,4343],{},[4345,4483,4484,4503],{},[4323,4485,4486,4488,4491,4494,4497,4500],{},[4350,4487,1732],{},[4350,4489,4490],{},"buildAssociateParentFetchQuery",[4350,4492,4493],{},"runAssociateParentFetchQuery",[4350,4495,4496],{},"buildAssociateFetchQuery",[4350,4498,4499],{},"runAssociateFetchQuery",[4350,4501,4502],{},"performAssociate",[4323,4504,4505,4507,4510,4513,4516,4519],{},[4350,4506,1735],{},[4350,4508,4509],{},"buildDissociateParentFetchQuery",[4350,4511,4512],{},"runDissociateParentFetchQuery",[4350,4514,4515],{},"buildDissociateFetchQuery",[4350,4517,4518],{},"runDissociateFetchQuery",[4350,4520,4521],{},"performDissociate",[396,4523,4524],{"id":4524},"多对多操作方法",[4317,4526,4527,4543],{},[4320,4528,4529],{},[4323,4530,4531,4533,4535,4537,4539,4541],{},[4326,4532,4328],{},[4326,4534,4331],{},[4326,4536,4334],{},[4326,4538,4337],{},[4326,4540,4340],{},[4326,4542,4343],{},[4345,4544,4545,4562,4579,4596,4613],{},[4323,4546,4547,4549,4552,4555,4557,4559],{},[4350,4548,426],{},[4350,4550,4551],{},"buildAttachParentFetchQuery",[4350,4553,4554],{},"runAttachParentFetchQuery",[4350,4556,4366],{},[4350,4558,4366],{},[4350,4560,4561],{},"performAttach",[4323,4563,4564,4566,4569,4572,4574,4576],{},[4350,4565,2281],{},[4350,4567,4568],{},"buildDetachParentFetchQuery",[4350,4570,4571],{},"runDetachParentFetchQuery",[4350,4573,4366],{},[4350,4575,4366],{},[4350,4577,4578],{},"performDetach",[4323,4580,4581,4583,4586,4589,4591,4593],{},[4350,4582,430],{},[4350,4584,4585],{},"buildSyncParentFetchQuery",[4350,4587,4588],{},"runSyncParentFetchQuery",[4350,4590,4366],{},[4350,4592,4366],{},[4350,4594,4595],{},"performSync",[4323,4597,4598,4600,4603,4606,4608,4610],{},[4350,4599,433],{},[4350,4601,4602],{},"buildToggleParentFetchQuery",[4350,4604,4605],{},"runToggleParentFetchQuery",[4350,4607,4366],{},[4350,4609,4366],{},[4350,4611,4612],{},"performToggle",[4323,4614,4615,4617,4620,4623,4625,4627],{},[4350,4616,436],{},[4350,4618,4619],{},"buildUpdatePivotParentFetchQuery",[4350,4621,4622],{},"runUpdatePivotParentFetchQuery",[4350,4624,4366],{},[4350,4626,4366],{},[4350,4628,4629],{},"performUpdatePivot",[457,4631,4632],{"icon":459},[156,4633,4634,4635,4638],{},"你还可以通过重写 ",[167,4636,4637],{},"performFill"," 方法来自定义模型属性的填充方式。",[4640,4641,4642],"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 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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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}",{"title":165,"searchDepth":173,"depth":184,"links":4644},[4645,4648,4651,4652,4656,4663,4667],{"id":154,"depth":184,"text":154,"children":4646},[4647],{"id":398,"depth":191,"text":398},{"id":487,"depth":184,"text":487,"children":4649},[4650],{"id":1047,"depth":191,"text":1047},{"id":1381,"depth":184,"text":1381},{"id":1694,"depth":184,"text":1694,"children":4653},[4654,4655],{"id":24,"depth":191,"text":24},{"id":2233,"depth":191,"text":2233},{"id":2248,"depth":184,"text":2248,"children":4657},[4658,4659,4660,4661,4662],{"id":2814,"depth":191,"text":2814},{"id":3078,"depth":191,"text":3078},{"id":3258,"depth":191,"text":3258},{"id":3448,"depth":191,"text":3448},{"id":3626,"depth":191,"text":3626},{"id":3729,"depth":184,"text":3729,"children":4664},[4665,4666],{"id":3740,"depth":191,"text":3740},{"id":3993,"depth":191,"text":3993},{"id":4305,"depth":184,"text":4305,"children":4668},[4669,4670,4671],{"id":4315,"depth":191,"text":4315},{"id":4463,"depth":191,"text":4463},{"id":4524,"depth":191,"text":4524},"了解如何通过 API 暴露模型关联。","md",null,{},{"title":24,"description":4672},"sc500l5kjIEIEQSA6-FQIV_0FUTiFUdHlq50iKonF1w",[4679,4681],{"title":20,"path":21,"stem":22,"description":4680,"children":-1},"了解如何通过 API 暴露模型。",{"title":28,"path":29,"stem":30,"description":4682,"children":-1},"钩子（Hooks）是 Orion 的强大特性之一。它让你无需重写方法本身，即可介入某个端点（或多个端点）内部的执行流程。",{"id":4684,"title":98,"body":4685,"description":8741,"extension":4673,"links":4674,"meta":8742,"navigation":187,"path":8743,"seo":8744,"stem":8745,"__hash__":8746},"docs_en\u002F1.guide\u002F04.relationships.md",{"type":149,"value":4686,"toc":8712},[4687,4691,4694,4860,4863,4867,4882,4898,4911,4933,4937,4940,5436,5440,5449,5605,5617,5725,5729,5732,5760,5771,5783,5788,5826,5831,5973,5996,6000,6003,6017,6042,6046,6084,6088,6428,6432,6438,6447,6452,6480,6484,6490,6496,6500,6503,6513,6544,6548,6586,6590,7002,7021,7025,7035,7047,7052,7064,7069,7109,7114,7260,7263,7269,7274,7291,7295,7335,7339,7433,7437,7446,7454,7459,7468,7472,7508,7512,7620,7624,7632,7640,7644,7680,7684,7792,7796,7804,7809,7813,7887,7891,7899,7903,8131,8135,8141,8430,8434,8442,8446,8556,8560,8608,8612,8702,8710],[152,4688,4690],{"id":4689},"setting-up-controller","Setting up Controller",[156,4692,4693],{},"Defining a model relationship controller is very similar to defining a model controller.",[160,4695,4697],{"className":162,"code":4696,"language":164,"meta":165,"style":165},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Post;\nuse Orion\\Http\\Controllers\\RelationController;\n\nclass PostCommentsController extends RelationController\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     * Name of the relationship as it is defined on the Post model\n     *\u002F\n    protected $relation = 'comments';\n}\n",[167,4698,4699,4705,4709,4729,4733,4749,4769,4773,4783,4787,4791,4796,4800,4821,4825,4829,4834,4838,4856],{"__ignoreMap":165},[170,4700,4701,4703],{"class":172,"line":173},[170,4702,177],{"class":176},[170,4704,181],{"class":180},[170,4706,4707],{"class":172,"line":184},[170,4708,188],{"emptyLinePlaceholder":187},[170,4710,4711,4713,4715,4717,4719,4721,4723,4725,4727],{"class":172,"line":191},[170,4712,195],{"class":194},[170,4714,199],{"class":198},[170,4716,202],{"class":176},[170,4718,205],{"class":198},[170,4720,202],{"class":176},[170,4722,210],{"class":198},[170,4724,202],{"class":176},[170,4726,215],{"class":198},[170,4728,218],{"class":176},[170,4730,4731],{"class":172,"line":221},[170,4732,188],{"emptyLinePlaceholder":187},[170,4734,4735,4737,4739,4741,4743,4745,4747],{"class":172,"line":226},[170,4736,229],{"class":194},[170,4738,199],{"class":180},[170,4740,202],{"class":176},[170,4742,94],{"class":180},[170,4744,202],{"class":176},[170,4746,240],{"class":180},[170,4748,218],{"class":176},[170,4750,4751,4753,4755,4757,4759,4761,4763,4765,4767],{"class":172,"line":245},[170,4752,229],{"class":194},[170,4754,250],{"class":180},[170,4756,202],{"class":176},[170,4758,205],{"class":180},[170,4760,202],{"class":176},[170,4762,210],{"class":180},[170,4764,202],{"class":176},[170,4766,263],{"class":180},[170,4768,218],{"class":176},[170,4770,4771],{"class":172,"line":268},[170,4772,188],{"emptyLinePlaceholder":187},[170,4774,4775,4777,4779,4781],{"class":172,"line":273},[170,4776,277],{"class":276},[170,4778,280],{"class":198},[170,4780,283],{"class":276},[170,4782,286],{"class":198},[170,4784,4785],{"class":172,"line":289},[170,4786,292],{"class":176},[170,4788,4789],{"class":172,"line":295},[170,4790,299],{"class":298},[170,4792,4793],{"class":172,"line":302},[170,4794,4795],{"class":298},"     * Fully-qualified model class name\n",[170,4797,4798],{"class":172,"line":308},[170,4799,311],{"class":298},[170,4801,4802,4804,4806,4808,4810,4812,4814,4816,4818],{"class":172,"line":314},[170,4803,317],{"class":276},[170,4805,320],{"class":176},[170,4807,323],{"class":180},[170,4809,326],{"class":176},[170,4811,329],{"class":198},[170,4813,332],{"class":176},[170,4815,277],{"class":194},[170,4817,337],{"class":176},[170,4819,4820],{"class":298}," \u002F\u002F or \"App\\Models\\Post\"\n",[170,4822,4823],{"class":172,"line":343},[170,4824,188],{"emptyLinePlaceholder":187},[170,4826,4827],{"class":172,"line":348},[170,4828,299],{"class":298},[170,4830,4831],{"class":172,"line":353},[170,4832,4833],{"class":298},"     * Name of the relationship as it is defined on the Post model\n",[170,4835,4836],{"class":172,"line":359},[170,4837,311],{"class":298},[170,4839,4840,4842,4844,4846,4848,4850,4852,4854],{"class":172,"line":364},[170,4841,317],{"class":276},[170,4843,320],{"class":176},[170,4845,371],{"class":180},[170,4847,326],{"class":176},[170,4849,376],{"class":176},[170,4851,380],{"class":379},[170,4853,383],{"class":176},[170,4855,218],{"class":176},[170,4857,4858],{"class":172,"line":388},[170,4859,391],{"class":176},[156,4861,4862],{},"At this point, you do not need to worry about different relationship types - controllers are defined in the same way for all types of relationships.",[396,4864,4866],{"id":4865},"fillable-pivot-fields-and-casting","Fillable Pivot Fields and Casting",[156,4868,4869,4870,4872,4873,4875,4876,4878,4879,4881],{},"If you are defining the controller for ",[167,4871,404],{}," or ",[167,4874,408],{}," relation type and have additional fields on the pivot table, there are two additional properties to note - ",[167,4877,412],{}," and ",[167,4880,416],{},".",[156,4883,4884,4885,4887,4888,4890,4891,4890,4893,4878,4895,4897],{},"The ",[167,4886,422],{}," property needs to contain a list of pivot table fields that can be updated via ",[167,4889,426],{},", ",[167,4892,430],{},[167,4894,433],{},[167,4896,436],{}," endpoints.",[156,4899,4884,4900,4902,4903,4905,4906,4910],{},[167,4901,442],{}," property should contain a list of json fields on the pivot table that you would like to automatically cast to\u002Ffrom array. If you have defined ",[167,4904,454],{}," property on the related ",[445,4907,4909],{"href":447,"rel":4908},[449],"Pivot model",", then you can skip it.",[457,4912,4913,4916],{"icon":459},[156,4914,4915],{},"Key Takeaways",[464,4917,4918,4923,4928],{},[467,4919,4920,4921],{},"Model relationship controllers always extend ",[167,4922,472],{},[467,4924,4925,4927],{},[167,4926,477],{}," property is set to a fully qualified model class name",[467,4929,4930,4932],{},[167,4931,483],{}," property is set to the exact relationship name as it is defined on the model",[152,4934,4936],{"id":4935},"setting-up-routes","Setting up Routes",[156,4938,4939],{},"Routes, unlike controllers, are defined in a different way for each relationship type.",[160,4941,4942],{"className":162,"code":493,"language":164,"meta":165,"style":165},[167,4943,4944,4950,4954,4974,4990,5010,5014,5018,5050,5054,5088,5122,5156,5190,5224,5258,5292,5326,5360,5394,5428,5432],{"__ignoreMap":165},[170,4945,4946,4948],{"class":172,"line":173},[170,4947,177],{"class":176},[170,4949,181],{"class":180},[170,4951,4952],{"class":172,"line":184},[170,4953,188],{"emptyLinePlaceholder":187},[170,4955,4956,4958,4960,4962,4964,4966,4968,4970,4972],{"class":172,"line":191},[170,4957,229],{"class":194},[170,4959,512],{"class":180},[170,4961,202],{"class":176},[170,4963,517],{"class":180},[170,4965,202],{"class":176},[170,4967,522],{"class":180},[170,4969,202],{"class":176},[170,4971,527],{"class":180},[170,4973,218],{"class":176},[170,4975,4976,4978,4980,4982,4984,4986,4988],{"class":172,"line":221},[170,4977,229],{"class":194},[170,4979,250],{"class":180},[170,4981,202],{"class":176},[170,4983,522],{"class":180},[170,4985,202],{"class":176},[170,4987,544],{"class":180},[170,4989,218],{"class":176},[170,4991,4992,4994,4996,4998,5000,5002,5004,5006,5008],{"class":172,"line":226},[170,4993,229],{"class":194},[170,4995,199],{"class":180},[170,4997,202],{"class":176},[170,4999,205],{"class":180},[170,5001,202],{"class":176},[170,5003,210],{"class":180},[170,5005,202],{"class":176},[170,5007,565],{"class":180},[170,5009,218],{"class":176},[170,5011,5012],{"class":172,"line":245},[170,5013,572],{"class":176},[170,5015,5016],{"class":172,"line":268},[170,5017,188],{"emptyLinePlaceholder":187},[170,5019,5020,5022,5024,5026,5028,5030,5032,5034,5036,5038,5040,5042,5044,5046,5048],{"class":172,"line":273},[170,5021,527],{"class":198},[170,5023,332],{"class":176},[170,5025,586],{"class":585},[170,5027,589],{"class":176},[170,5029,383],{"class":176},[170,5031,594],{"class":379},[170,5033,383],{"class":176},[170,5035,599],{"class":176},[170,5037,376],{"class":176},[170,5039,604],{"class":379},[170,5041,383],{"class":176},[170,5043,609],{"class":176},[170,5045,612],{"class":276},[170,5047,615],{"class":176},[170,5049,618],{"class":176},[170,5051,5052],{"class":172,"line":289},[170,5053,623],{"class":176},[170,5055,5056,5058,5060,5062,5064,5066,5068,5070,5072,5074,5076,5078,5080,5082,5084,5086],{"class":172,"line":295},[170,5057,628],{"class":198},[170,5059,332],{"class":176},[170,5061,633],{"class":585},[170,5063,636],{"class":176},[170,5065,383],{"class":176},[170,5067,641],{"class":379},[170,5069,383],{"class":176},[170,5071,646],{"class":176},[170,5073,376],{"class":176},[170,5075,651],{"class":379},[170,5077,383],{"class":176},[170,5079,646],{"class":176},[170,5081,658],{"class":198},[170,5083,332],{"class":176},[170,5085,277],{"class":194},[170,5087,665],{"class":176},[170,5089,5090,5092,5094,5096,5098,5100,5102,5104,5106,5108,5110,5112,5114,5116,5118,5120],{"class":172,"line":302},[170,5091,628],{"class":198},[170,5093,332],{"class":176},[170,5095,674],{"class":585},[170,5097,636],{"class":176},[170,5099,383],{"class":176},[170,5101,681],{"class":379},[170,5103,383],{"class":176},[170,5105,646],{"class":176},[170,5107,376],{"class":176},[170,5109,690],{"class":379},[170,5111,383],{"class":176},[170,5113,646],{"class":176},[170,5115,697],{"class":198},[170,5117,332],{"class":176},[170,5119,277],{"class":194},[170,5121,665],{"class":176},[170,5123,5124,5126,5128,5130,5132,5134,5136,5138,5140,5142,5144,5146,5148,5150,5152,5154],{"class":172,"line":308},[170,5125,628],{"class":198},[170,5127,332],{"class":176},[170,5129,712],{"class":585},[170,5131,636],{"class":176},[170,5133,383],{"class":176},[170,5135,690],{"class":379},[170,5137,383],{"class":176},[170,5139,646],{"class":176},[170,5141,376],{"class":176},[170,5143,727],{"class":379},[170,5145,383],{"class":176},[170,5147,646],{"class":176},[170,5149,734],{"class":198},[170,5151,332],{"class":176},[170,5153,277],{"class":194},[170,5155,665],{"class":176},[170,5157,5158,5160,5162,5164,5166,5168,5170,5172,5174,5176,5178,5180,5182,5184,5186,5188],{"class":172,"line":314},[170,5159,628],{"class":198},[170,5161,332],{"class":176},[170,5163,749],{"class":585},[170,5165,636],{"class":176},[170,5167,383],{"class":176},[170,5169,681],{"class":379},[170,5171,383],{"class":176},[170,5173,646],{"class":176},[170,5175,376],{"class":176},[170,5177,764],{"class":379},[170,5179,383],{"class":176},[170,5181,646],{"class":176},[170,5183,771],{"class":198},[170,5185,332],{"class":176},[170,5187,277],{"class":194},[170,5189,665],{"class":176},[170,5191,5192,5194,5196,5198,5200,5202,5204,5206,5208,5210,5212,5214,5216,5218,5220,5222],{"class":172,"line":343},[170,5193,628],{"class":198},[170,5195,332],{"class":176},[170,5197,786],{"class":585},[170,5199,636],{"class":176},[170,5201,383],{"class":176},[170,5203,690],{"class":379},[170,5205,383],{"class":176},[170,5207,646],{"class":176},[170,5209,376],{"class":176},[170,5211,801],{"class":379},[170,5213,383],{"class":176},[170,5215,646],{"class":176},[170,5217,808],{"class":198},[170,5219,332],{"class":176},[170,5221,277],{"class":194},[170,5223,665],{"class":176},[170,5225,5226,5228,5230,5232,5234,5236,5238,5240,5242,5244,5246,5248,5250,5252,5254,5256],{"class":172,"line":348},[170,5227,628],{"class":198},[170,5229,332],{"class":176},[170,5231,823],{"class":585},[170,5233,636],{"class":176},[170,5235,383],{"class":176},[170,5237,681],{"class":379},[170,5239,383],{"class":176},[170,5241,646],{"class":176},[170,5243,376],{"class":176},[170,5245,380],{"class":379},[170,5247,383],{"class":176},[170,5249,646],{"class":176},[170,5251,844],{"class":198},[170,5253,332],{"class":176},[170,5255,277],{"class":194},[170,5257,665],{"class":176},[170,5259,5260,5262,5264,5266,5268,5270,5272,5274,5276,5278,5280,5282,5284,5286,5288,5290],{"class":172,"line":353},[170,5261,628],{"class":198},[170,5263,332],{"class":176},[170,5265,859],{"class":585},[170,5267,636],{"class":176},[170,5269,383],{"class":176},[170,5271,690],{"class":379},[170,5273,383],{"class":176},[170,5275,646],{"class":176},[170,5277,376],{"class":176},[170,5279,651],{"class":379},[170,5281,383],{"class":176},[170,5283,646],{"class":176},[170,5285,880],{"class":198},[170,5287,332],{"class":176},[170,5289,277],{"class":194},[170,5291,665],{"class":176},[170,5293,5294,5296,5298,5300,5302,5304,5306,5308,5310,5312,5314,5316,5318,5320,5322,5324],{"class":172,"line":359},[170,5295,628],{"class":198},[170,5297,332],{"class":176},[170,5299,895],{"class":585},[170,5301,636],{"class":176},[170,5303,383],{"class":176},[170,5305,690],{"class":379},[170,5307,383],{"class":176},[170,5309,646],{"class":176},[170,5311,376],{"class":176},[170,5313,380],{"class":379},[170,5315,383],{"class":176},[170,5317,646],{"class":176},[170,5319,280],{"class":198},[170,5321,332],{"class":176},[170,5323,277],{"class":194},[170,5325,665],{"class":176},[170,5327,5328,5330,5332,5334,5336,5338,5340,5342,5344,5346,5348,5350,5352,5354,5356,5358],{"class":172,"line":364},[170,5329,628],{"class":198},[170,5331,332],{"class":176},[170,5333,930],{"class":585},[170,5335,636],{"class":176},[170,5337,383],{"class":176},[170,5339,937],{"class":379},[170,5341,383],{"class":176},[170,5343,646],{"class":176},[170,5345,376],{"class":176},[170,5347,946],{"class":379},[170,5349,383],{"class":176},[170,5351,646],{"class":176},[170,5353,953],{"class":198},[170,5355,332],{"class":176},[170,5357,277],{"class":194},[170,5359,665],{"class":176},[170,5361,5362,5364,5366,5368,5370,5372,5374,5376,5378,5380,5382,5384,5386,5388,5390,5392],{"class":172,"line":388},[170,5363,628],{"class":198},[170,5365,332],{"class":176},[170,5367,968],{"class":585},[170,5369,636],{"class":176},[170,5371,383],{"class":176},[170,5373,690],{"class":379},[170,5375,383],{"class":176},[170,5377,646],{"class":176},[170,5379,376],{"class":176},[170,5381,983],{"class":379},[170,5383,383],{"class":176},[170,5385,646],{"class":176},[170,5387,990],{"class":198},[170,5389,332],{"class":176},[170,5391,277],{"class":194},[170,5393,665],{"class":176},[170,5395,5396,5398,5400,5402,5404,5406,5408,5410,5412,5414,5416,5418,5420,5422,5424,5426],{"class":172,"line":999},[170,5397,628],{"class":198},[170,5399,332],{"class":176},[170,5401,1006],{"class":585},[170,5403,636],{"class":176},[170,5405,383],{"class":176},[170,5407,983],{"class":379},[170,5409,383],{"class":176},[170,5411,646],{"class":176},[170,5413,376],{"class":176},[170,5415,690],{"class":379},[170,5417,383],{"class":176},[170,5419,646],{"class":176},[170,5421,1027],{"class":198},[170,5423,332],{"class":176},[170,5425,277],{"class":194},[170,5427,665],{"class":176},[170,5429,5430],{"class":172,"line":1036},[170,5431,623],{"class":176},[170,5433,5434],{"class":172,"line":1041},[170,5435,1044],{"class":176},[396,5437,5439],{"id":5438},"soft-deletes","Soft Deletes",[156,5441,5442,5443,5445,5446,5448],{},"If your relation model uses the ",[167,5444,1053],{}," trait and you would like to expose the same functionality via the API, call the ",[167,5447,1057],{}," method upon resource registration.",[160,5450,5451],{"className":162,"code":1061,"language":164,"meta":165,"style":165},[167,5452,5453,5459,5463,5483,5499,5519,5523,5555,5559,5597,5601],{"__ignoreMap":165},[170,5454,5455,5457],{"class":172,"line":173},[170,5456,177],{"class":176},[170,5458,181],{"class":180},[170,5460,5461],{"class":172,"line":184},[170,5462,188],{"emptyLinePlaceholder":187},[170,5464,5465,5467,5469,5471,5473,5475,5477,5479,5481],{"class":172,"line":191},[170,5466,229],{"class":194},[170,5468,512],{"class":180},[170,5470,202],{"class":176},[170,5472,517],{"class":180},[170,5474,202],{"class":176},[170,5476,522],{"class":180},[170,5478,202],{"class":176},[170,5480,527],{"class":180},[170,5482,218],{"class":176},[170,5484,5485,5487,5489,5491,5493,5495,5497],{"class":172,"line":221},[170,5486,229],{"class":194},[170,5488,250],{"class":180},[170,5490,202],{"class":176},[170,5492,522],{"class":180},[170,5494,202],{"class":176},[170,5496,544],{"class":180},[170,5498,218],{"class":176},[170,5500,5501,5503,5505,5507,5509,5511,5513,5515,5517],{"class":172,"line":226},[170,5502,229],{"class":194},[170,5504,199],{"class":180},[170,5506,202],{"class":176},[170,5508,205],{"class":180},[170,5510,202],{"class":176},[170,5512,210],{"class":180},[170,5514,202],{"class":176},[170,5516,1128],{"class":180},[170,5518,218],{"class":176},[170,5520,5521],{"class":172,"line":245},[170,5522,188],{"emptyLinePlaceholder":187},[170,5524,5525,5527,5529,5531,5533,5535,5537,5539,5541,5543,5545,5547,5549,5551,5553],{"class":172,"line":268},[170,5526,527],{"class":198},[170,5528,332],{"class":176},[170,5530,586],{"class":585},[170,5532,589],{"class":176},[170,5534,383],{"class":176},[170,5536,594],{"class":379},[170,5538,383],{"class":176},[170,5540,599],{"class":176},[170,5542,376],{"class":176},[170,5544,604],{"class":379},[170,5546,383],{"class":176},[170,5548,609],{"class":176},[170,5550,612],{"class":276},[170,5552,615],{"class":176},[170,5554,618],{"class":176},[170,5556,5557],{"class":172,"line":273},[170,5558,623],{"class":176},[170,5560,5561,5563,5565,5567,5569,5571,5573,5575,5577,5579,5581,5583,5585,5587,5589,5591,5593,5595],{"class":172,"line":289},[170,5562,628],{"class":198},[170,5564,332],{"class":176},[170,5566,674],{"class":585},[170,5568,636],{"class":176},[170,5570,383],{"class":176},[170,5572,681],{"class":379},[170,5574,383],{"class":176},[170,5576,646],{"class":176},[170,5578,376],{"class":176},[170,5580,690],{"class":379},[170,5582,383],{"class":176},[170,5584,646],{"class":176},[170,5586,697],{"class":198},[170,5588,332],{"class":176},[170,5590,277],{"class":194},[170,5592,1205],{"class":176},[170,5594,1057],{"class":585},[170,5596,1210],{"class":176},[170,5598,5599],{"class":172,"line":295},[170,5600,623],{"class":176},[170,5602,5603],{"class":172,"line":302},[170,5604,1044],{"class":176},[156,5606,5607,5608,4878,5610,5612,5613,5616],{},"This will introduce ",[167,5609,1224],{},[167,5611,1227],{}," endpoints. To learn how to permanently delete a resource via API (force delete), take a look at the related ",[445,5614,114],{"href":5615},"\u002Fguide\u002Fquery-parameters#soft-deletes"," section.",[160,5618,5619],{"className":1235,"code":1236,"language":1237,"meta":165,"style":165},[167,5620,5621,5625,5653,5657,5661,5695],{"__ignoreMap":165},[170,5622,5623],{"class":172,"line":173},[170,5624,1244],{"class":198},[170,5626,5627,5629,5631,5633,5635,5637,5639,5641,5643,5645,5647,5649,5651],{"class":172,"line":184},[170,5628,1249],{"class":176},[170,5630,1252],{"class":198},[170,5632,1255],{"class":176},[170,5634,1258],{"class":198},[170,5636,1261],{"class":176},[170,5638,1264],{"class":198},[170,5640,1267],{"class":176},[170,5642,1270],{"class":198},[170,5644,1273],{"class":176},[170,5646,1276],{"class":198},[170,5648,1279],{"class":176},[170,5650,1282],{"class":198},[170,5652,1285],{"class":176},[170,5654,5655],{"class":172,"line":191},[170,5656,1244],{"class":198},[170,5658,5659],{"class":172,"line":221},[170,5660,572],{"class":585},[170,5662,5663,5665,5667,5669,5671,5673,5675,5677,5679,5681,5683,5685,5687,5689,5691,5693],{"class":172,"line":226},[170,5664,1249],{"class":176},[170,5666,1300],{"class":176},[170,5668,1303],{"class":198},[170,5670,1306],{"class":176},[170,5672,1309],{"class":198},[170,5674,1312],{"class":379},[170,5676,1315],{"class":198},[170,5678,1318],{"class":379},[170,5680,1321],{"class":198},[170,5682,1324],{"class":176},[170,5684,1327],{"class":198},[170,5686,1330],{"class":176},[170,5688,1333],{"class":198},[170,5690,1336],{"class":176},[170,5692,1339],{"class":198},[170,5694,1342],{"class":176},[170,5696,5697,5699,5701,5703,5705,5707,5709,5711,5713,5715,5717,5719,5721,5723],{"class":172,"line":245},[170,5698,1249],{"class":176},[170,5700,1300],{"class":176},[170,5702,1303],{"class":198},[170,5704,1306],{"class":176},[170,5706,1309],{"class":198},[170,5708,1312],{"class":379},[170,5710,1359],{"class":198},[170,5712,1362],{"class":176},[170,5714,1365],{"class":198},[170,5716,1368],{"class":176},[170,5718,1371],{"class":198},[170,5720,1374],{"class":176},[170,5722,1339],{"class":198},[170,5724,1342],{"class":176},[152,5726,5728],{"id":5727},"one-to-one","One to One",[156,5730,5731],{},"The following relationships are considered one-to-one relationships:",[464,5733,5734,5738,5742,5746,5754],{},[467,5735,5736],{},[167,5737,1391],{},[467,5739,5740],{},[167,5741,1396],{},[467,5743,5744],{},[167,5745,1401],{},[467,5747,5748,5750,5751,5753],{},[167,5749,1406],{}," (inverse of the ",[167,5752,1410],{}," relation)",[467,5755,5756,5750,5758,5753],{},[167,5757,1416],{},[167,5759,1419],{},[156,5761,5762,5763,4890,5765,4890,5767,4890,5769],{},"For one-to-one relationships, Orion provides 4 endpoints (basically endpoints for CRUD operations): ",[167,5764,1425],{},[167,5766,1428],{},[167,5768,1431],{},[167,5770,1434],{},[1436,5772,5773],{},[156,5774,4884,5775,4878,5777,5779,5780,5782],{},[167,5776,1406],{},[167,5778,1416],{}," relations are not provided with a ",[167,5781,1425],{}," endpoint.",[156,5784,5785],{},[1451,5786,5787],{},"Example route registration",[160,5789,5790],{"className":162,"code":1456,"language":164,"meta":165,"style":165},[167,5791,5792],{"__ignoreMap":165},[170,5793,5794,5796,5798,5800,5802,5804,5806,5808,5810,5812,5814,5816,5818,5820,5822,5824],{"class":172,"line":173},[170,5795,544],{"class":198},[170,5797,332],{"class":176},[170,5799,633],{"class":585},[170,5801,636],{"class":176},[170,5803,383],{"class":176},[170,5805,641],{"class":379},[170,5807,383],{"class":176},[170,5809,646],{"class":176},[170,5811,376],{"class":176},[170,5813,651],{"class":379},[170,5815,383],{"class":176},[170,5817,1485],{"class":176},[170,5819,658],{"class":198},[170,5821,332],{"class":176},[170,5823,277],{"class":194},[170,5825,665],{"class":176},[156,5827,5828],{},[1451,5829,5830],{},"Example available endpoints",[160,5832,5833],{"className":1235,"code":1501,"language":1237,"meta":165,"style":165},[167,5834,5835,5839,5859,5863,5887,5917,5947],{"__ignoreMap":165},[170,5836,5837],{"class":172,"line":173},[170,5838,1508],{"class":198},[170,5840,5841,5843,5845,5847,5849,5851,5853,5855,5857],{"class":172,"line":184},[170,5842,1249],{"class":176},[170,5844,1258],{"class":198},[170,5846,1261],{"class":176},[170,5848,1264],{"class":198},[170,5850,1267],{"class":176},[170,5852,1270],{"class":198},[170,5854,1525],{"class":176},[170,5856,1276],{"class":198},[170,5858,1530],{"class":176},[170,5860,5861],{"class":172,"line":191},[170,5862,1508],{"class":198},[170,5864,5865,5867,5869,5871,5873,5875,5877,5879,5881,5883,5885],{"class":172,"line":221},[170,5866,1249],{"class":176},[170,5868,1303],{"class":198},[170,5870,1306],{"class":176},[170,5872,1545],{"class":198},[170,5874,1548],{"class":379},[170,5876,1551],{"class":198},[170,5878,1554],{"class":176},[170,5880,1557],{"class":198},[170,5882,1300],{"class":176},[170,5884,1562],{"class":198},[170,5886,1565],{"class":176},[170,5888,5889,5891,5893,5895,5897,5899,5901,5903,5905,5907,5909,5911,5913,5915],{"class":172,"line":226},[170,5890,1249],{"class":176},[170,5892,1572],{"class":198},[170,5894,1249],{"class":176},[170,5896,1577],{"class":198},[170,5898,1368],{"class":176},[170,5900,1545],{"class":198},[170,5902,1548],{"class":379},[170,5904,1586],{"class":198},[170,5906,1589],{"class":379},[170,5908,1324],{"class":176},[170,5910,1594],{"class":198},[170,5912,1597],{"class":176},[170,5914,1600],{"class":198},[170,5916,1603],{"class":176},[170,5918,5919,5921,5923,5925,5927,5929,5931,5933,5935,5937,5939,5941,5943,5945],{"class":172,"line":245},[170,5920,1249],{"class":176},[170,5922,1610],{"class":198},[170,5924,1249],{"class":176},[170,5926,1615],{"class":198},[170,5928,1255],{"class":176},[170,5930,1545],{"class":198},[170,5932,1548],{"class":379},[170,5934,1586],{"class":198},[170,5936,1589],{"class":379},[170,5938,1324],{"class":176},[170,5940,1630],{"class":198},[170,5942,1330],{"class":176},[170,5944,1635],{"class":198},[170,5946,1638],{"class":176},[170,5948,5949,5951,5953,5955,5957,5959,5961,5963,5965,5967,5969,5971],{"class":172,"line":268},[170,5950,1249],{"class":176},[170,5952,1645],{"class":198},[170,5954,1261],{"class":176},[170,5956,1545],{"class":198},[170,5958,1548],{"class":379},[170,5960,1586],{"class":198},[170,5962,1589],{"class":379},[170,5964,1324],{"class":176},[170,5966,1660],{"class":198},[170,5968,1306],{"class":176},[170,5970,1665],{"class":198},[170,5972,1668],{"class":176},[457,5974,5975,5978],{"icon":459},[156,5976,5977],{},"Notice that the last parameter is marked as optional. Because it's a one-to-one relation, you can access the endpoint without providing the related key - Orion will take care of it 🙂",[156,5979,5980,5982,5984,4890,5986,4890,5988,4890,5990,5992,5993,5995],{},[1677,5981],{},[1677,5983],{},[167,5985,1391],{},[167,5987,1396],{},[167,5989,1401],{},[167,5991,1406],{},", and ",[167,5994,1416],{}," relations do not require the related resource key.",[152,5997,5999],{"id":5998},"one-to-many","One to Many",[156,6001,6002],{},"The following relationships are considered one-to-many relationships:",[464,6004,6005,6009,6013],{},[467,6006,6007],{},[167,6008,1410],{},[467,6010,6011],{},[167,6012,1708],{},[467,6014,6015],{},[167,6016,1419],{},[156,6018,6019,6020,4890,6022,4890,6024,4890,6026,4890,6028,4890,6030,4890,6032,4890,6034,4890,6036,4890,6038,4890,6040],{},"For one-to-many relationships, Orion provides 11 endpoints (endpoints for CRUD operations, searching, associating, and dissociating): ",[167,6021,1718],{},[167,6023,1721],{},[167,6025,1425],{},[167,6027,1428],{},[167,6029,1431],{},[167,6031,1434],{},[167,6033,1732],{},[167,6035,1735],{},[167,6037,1738],{},[167,6039,1741],{},[167,6041,1744],{},[156,6043,6044],{},[1451,6045,5787],{},[160,6047,6048],{"className":162,"code":1751,"language":164,"meta":165,"style":165},[167,6049,6050],{"__ignoreMap":165},[170,6051,6052,6054,6056,6058,6060,6062,6064,6066,6068,6070,6072,6074,6076,6078,6080,6082],{"class":172,"line":173},[170,6053,544],{"class":198},[170,6055,332],{"class":176},[170,6057,674],{"class":585},[170,6059,636],{"class":176},[170,6061,383],{"class":176},[170,6063,681],{"class":379},[170,6065,383],{"class":176},[170,6067,646],{"class":176},[170,6069,376],{"class":176},[170,6071,690],{"class":379},[170,6073,383],{"class":176},[170,6075,1485],{"class":176},[170,6077,697],{"class":198},[170,6079,332],{"class":176},[170,6081,277],{"class":194},[170,6083,665],{"class":176},[156,6085,6086],{},[1451,6087,5830],{},[160,6089,6090],{"className":1235,"code":1794,"language":1237,"meta":165,"style":165},[167,6091,6092,6096,6116,6120,6148,6172,6196,6226,6252,6278,6304,6328,6356,6380,6404],{"__ignoreMap":165},[170,6093,6094],{"class":172,"line":173},[170,6095,1801],{"class":198},[170,6097,6098,6100,6102,6104,6106,6108,6110,6112,6114],{"class":172,"line":184},[170,6099,1249],{"class":176},[170,6101,1258],{"class":198},[170,6103,1261],{"class":176},[170,6105,1264],{"class":198},[170,6107,1267],{"class":176},[170,6109,1270],{"class":198},[170,6111,1273],{"class":176},[170,6113,1276],{"class":198},[170,6115,1530],{"class":176},[170,6117,6118],{"class":172,"line":191},[170,6119,1801],{"class":198},[170,6121,6122,6124,6126,6128,6130,6132,6134,6136,6138,6140,6142,6144,6146],{"class":172,"line":221},[170,6123,1249],{"class":176},[170,6125,1572],{"class":198},[170,6127,1249],{"class":176},[170,6129,1577],{"class":198},[170,6131,1368],{"class":176},[170,6133,1309],{"class":198},[170,6135,1312],{"class":379},[170,6137,1844],{"class":198},[170,6139,1847],{"class":176},[170,6141,1850],{"class":198},[170,6143,1597],{"class":176},[170,6145,1855],{"class":198},[170,6147,1858],{"class":176},[170,6149,6150,6152,6154,6156,6158,6160,6162,6164,6166,6168,6170],{"class":172,"line":226},[170,6151,1249],{"class":176},[170,6153,1303],{"class":198},[170,6155,1306],{"class":176},[170,6157,1309],{"class":198},[170,6159,1312],{"class":379},[170,6161,1873],{"class":198},[170,6163,1876],{"class":176},[170,6165,1879],{"class":198},[170,6167,1300],{"class":176},[170,6169,1855],{"class":198},[170,6171,1858],{"class":176},[170,6173,6174,6176,6178,6180,6182,6184,6186,6188,6190,6192,6194],{"class":172,"line":245},[170,6175,1249],{"class":176},[170,6177,1303],{"class":198},[170,6179,1306],{"class":176},[170,6181,1309],{"class":198},[170,6183,1312],{"class":379},[170,6185,1844],{"class":198},[170,6187,1847],{"class":176},[170,6189,1904],{"class":198},[170,6191,1597],{"class":176},[170,6193,1909],{"class":198},[170,6195,1858],{"class":176},[170,6197,6198,6200,6202,6204,6206,6208,6210,6212,6214,6216,6218,6220,6222,6224],{"class":172,"line":268},[170,6199,1249],{"class":176},[170,6201,1572],{"class":198},[170,6203,1249],{"class":176},[170,6205,1577],{"class":198},[170,6207,1368],{"class":176},[170,6209,1309],{"class":198},[170,6211,1312],{"class":379},[170,6213,1315],{"class":198},[170,6215,1318],{"class":379},[170,6217,1876],{"class":176},[170,6219,1936],{"class":198},[170,6221,1939],{"class":176},[170,6223,1942],{"class":198},[170,6225,1945],{"class":176},[170,6227,6228,6230,6232,6234,6236,6238,6240,6242,6244,6246,6248,6250],{"class":172,"line":273},[170,6229,1249],{"class":176},[170,6231,1610],{"class":198},[170,6233,1954],{"class":176},[170,6235,1309],{"class":198},[170,6237,1312],{"class":379},[170,6239,1315],{"class":198},[170,6241,1318],{"class":379},[170,6243,1876],{"class":176},[170,6245,1967],{"class":198},[170,6247,1300],{"class":176},[170,6249,1972],{"class":198},[170,6251,1975],{"class":176},[170,6253,6254,6256,6258,6260,6262,6264,6266,6268,6270,6272,6274,6276],{"class":172,"line":289},[170,6255,1249],{"class":176},[170,6257,1982],{"class":198},[170,6259,1330],{"class":176},[170,6261,1309],{"class":198},[170,6263,1312],{"class":379},[170,6265,1315],{"class":198},[170,6267,1318],{"class":379},[170,6269,1876],{"class":176},[170,6271,1967],{"class":198},[170,6273,1300],{"class":176},[170,6275,1972],{"class":198},[170,6277,1975],{"class":176},[170,6279,6280,6282,6284,6286,6288,6290,6292,6294,6296,6298,6300,6302],{"class":172,"line":295},[170,6281,1249],{"class":176},[170,6283,1645],{"class":198},[170,6285,1261],{"class":176},[170,6287,1309],{"class":198},[170,6289,1312],{"class":379},[170,6291,1315],{"class":198},[170,6293,1318],{"class":379},[170,6295,1876],{"class":176},[170,6297,2023],{"class":198},[170,6299,1330],{"class":176},[170,6301,2028],{"class":198},[170,6303,1603],{"class":176},[170,6305,6306,6308,6310,6312,6314,6316,6318,6320,6322,6324,6326],{"class":172,"line":302},[170,6307,1249],{"class":176},[170,6309,1303],{"class":198},[170,6311,1306],{"class":176},[170,6313,1309],{"class":198},[170,6315,1312],{"class":379},[170,6317,2045],{"class":198},[170,6319,2048],{"class":176},[170,6321,2051],{"class":198},[170,6323,1954],{"class":176},[170,6325,2056],{"class":198},[170,6327,1638],{"class":176},[170,6329,6330,6332,6334,6336,6338,6340,6342,6344,6346,6348,6350,6352,6354],{"class":172,"line":308},[170,6331,1249],{"class":176},[170,6333,1645],{"class":198},[170,6335,1261],{"class":176},[170,6337,1309],{"class":198},[170,6339,1312],{"class":379},[170,6341,1315],{"class":198},[170,6343,1318],{"class":379},[170,6345,2077],{"class":198},[170,6347,1300],{"class":176},[170,6349,2082],{"class":198},[170,6351,1261],{"class":176},[170,6353,2087],{"class":198},[170,6355,1668],{"class":176},[170,6357,6358,6360,6362,6364,6366,6368,6370,6372,6374,6376,6378],{"class":172,"line":314},[170,6359,1249],{"class":176},[170,6361,1303],{"class":198},[170,6363,1306],{"class":176},[170,6365,1309],{"class":198},[170,6367,1312],{"class":379},[170,6369,2104],{"class":198},[170,6371,1554],{"class":176},[170,6373,2109],{"class":198},[170,6375,1261],{"class":176},[170,6377,2114],{"class":198},[170,6379,1668],{"class":176},[170,6381,6382,6384,6386,6388,6390,6392,6394,6396,6398,6400,6402],{"class":172,"line":343},[170,6383,1249],{"class":176},[170,6385,1610],{"class":198},[170,6387,1954],{"class":176},[170,6389,1309],{"class":198},[170,6391,1312],{"class":379},[170,6393,2104],{"class":198},[170,6395,1554],{"class":176},[170,6397,2135],{"class":198},[170,6399,2138],{"class":176},[170,6401,2141],{"class":198},[170,6403,2144],{"class":176},[170,6405,6406,6408,6410,6412,6414,6416,6418,6420,6422,6424,6426],{"class":172,"line":348},[170,6407,1249],{"class":176},[170,6409,1645],{"class":198},[170,6411,1261],{"class":176},[170,6413,1309],{"class":198},[170,6415,1312],{"class":379},[170,6417,2104],{"class":198},[170,6419,1554],{"class":176},[170,6421,2163],{"class":198},[170,6423,1368],{"class":176},[170,6425,2168],{"class":198},[170,6427,2171],{"class":176},[396,6429,6431],{"id":6430},"associating","Associating",[156,6433,6434,6435,6437],{},"One-to-many relation resource provides an ",[167,6436,1732],{}," endpoint to associate a relation model with a parent model.",[156,6439,6440,6441,6443,6444,6446],{},"Request payload to the endpoint has only one field - ",[167,6442,2185],{},". In our example, ",[167,6445,2185],{}," would be the ID of a post to be associated with a user.",[156,6448,6449],{},[1451,6450,6451],{},"Example request:",[160,6453,6454],{"className":2197,"code":2198,"language":2199,"meta":165,"style":165},[167,6455,6456,6460,6464,6476],{"__ignoreMap":165},[170,6457,6458],{"class":172,"line":173},[170,6459,2206],{"class":298},[170,6461,6462],{"class":172,"line":184},[170,6463,292],{"class":176},[170,6465,6466,6468,6470,6472,6474],{"class":172,"line":191},[170,6467,2215],{"class":176},[170,6469,2185],{"class":276},[170,6471,2220],{"class":176},[170,6473,2223],{"class":176},[170,6475,2226],{"class":194},[170,6477,6478],{"class":172,"line":221},[170,6479,391],{"class":176},[396,6481,6483],{"id":6482},"dissociating","Dissociating",[156,6485,6486,6487,6489],{},"One-to-many relation resource also provides a ",[167,6488,1735],{}," endpoint to dissociate a relation model from its parent model.",[156,6491,6492,6493,6495],{},"There is no payload in the request for this endpoint; however, notice the ",[167,6494,1318],{}," route parameter in the example routes above - this would be the ID of a post to be dissociated from a user.",[152,6497,6499],{"id":6498},"many-to-many","Many to Many",[156,6501,6502],{},"The following relationships are considered many-to-many relationships:",[464,6504,6505,6509],{},[467,6506,6507],{},[167,6508,404],{},[467,6510,6511],{},[167,6512,408],{},[156,6514,6515,6516,4890,6518,4890,6520,4890,6522,4890,6524,4890,6526,4890,6528,4890,6530,4890,6532,4890,6534,4890,6536,4890,6538,4890,6540,4890,6542],{},"For many-to-many relationships, Orion provides 14 endpoints (endpoints for CRUD operations, searching, attaching, detaching, syncing, toggling, and updating pivot): ",[167,6517,1718],{},[167,6519,1721],{},[167,6521,1425],{},[167,6523,1428],{},[167,6525,1431],{},[167,6527,1434],{},[167,6529,426],{},[167,6531,2281],{},[167,6533,430],{},[167,6535,433],{},[167,6537,2288],{},[167,6539,1738],{},[167,6541,1741],{},[167,6543,1744],{},[156,6545,6546],{},[1451,6547,5787],{},[160,6549,6550],{"className":162,"code":2301,"language":164,"meta":165,"style":165},[167,6551,6552],{"__ignoreMap":165},[170,6553,6554,6556,6558,6560,6562,6564,6566,6568,6570,6572,6574,6576,6578,6580,6582,6584],{"class":172,"line":173},[170,6555,544],{"class":198},[170,6557,332],{"class":176},[170,6559,749],{"class":585},[170,6561,636],{"class":176},[170,6563,383],{"class":176},[170,6565,681],{"class":379},[170,6567,383],{"class":176},[170,6569,646],{"class":176},[170,6571,376],{"class":176},[170,6573,764],{"class":379},[170,6575,383],{"class":176},[170,6577,1485],{"class":176},[170,6579,771],{"class":198},[170,6581,332],{"class":176},[170,6583,277],{"class":194},[170,6585,665],{"class":176},[156,6587,6588],{},[1451,6589,5830],{},[160,6591,6592],{"className":1235,"code":2344,"language":1237,"meta":165,"style":165},[167,6593,6594,6598,6618,6622,6650,6674,6698,6728,6754,6780,6806,6830,6854,6878,6902,6930,6954,6978],{"__ignoreMap":165},[170,6595,6596],{"class":172,"line":173},[170,6597,1801],{"class":198},[170,6599,6600,6602,6604,6606,6608,6610,6612,6614,6616],{"class":172,"line":184},[170,6601,1249],{"class":176},[170,6603,1258],{"class":198},[170,6605,1261],{"class":176},[170,6607,1264],{"class":198},[170,6609,1267],{"class":176},[170,6611,1270],{"class":198},[170,6613,1273],{"class":176},[170,6615,1276],{"class":198},[170,6617,1530],{"class":176},[170,6619,6620],{"class":172,"line":191},[170,6621,1801],{"class":198},[170,6623,6624,6626,6628,6630,6632,6634,6636,6638,6640,6642,6644,6646,6648],{"class":172,"line":221},[170,6625,1249],{"class":176},[170,6627,1572],{"class":198},[170,6629,1249],{"class":176},[170,6631,1577],{"class":198},[170,6633,1368],{"class":176},[170,6635,1309],{"class":198},[170,6637,1312],{"class":379},[170,6639,2393],{"class":198},[170,6641,1847],{"class":176},[170,6643,2398],{"class":198},[170,6645,1597],{"class":176},[170,6647,2403],{"class":198},[170,6649,1858],{"class":176},[170,6651,6652,6654,6656,6658,6660,6662,6664,6666,6668,6670,6672],{"class":172,"line":226},[170,6653,1249],{"class":176},[170,6655,1303],{"class":198},[170,6657,1306],{"class":176},[170,6659,1309],{"class":198},[170,6661,1312],{"class":379},[170,6663,2420],{"class":198},[170,6665,1876],{"class":176},[170,6667,2425],{"class":198},[170,6669,1300],{"class":176},[170,6671,2403],{"class":198},[170,6673,1858],{"class":176},[170,6675,6676,6678,6680,6682,6684,6686,6688,6690,6692,6694,6696],{"class":172,"line":245},[170,6677,1249],{"class":176},[170,6679,1303],{"class":198},[170,6681,1306],{"class":176},[170,6683,1309],{"class":198},[170,6685,1312],{"class":379},[170,6687,2393],{"class":198},[170,6689,1847],{"class":176},[170,6691,2450],{"class":198},[170,6693,1597],{"class":176},[170,6695,2455],{"class":198},[170,6697,1858],{"class":176},[170,6699,6700,6702,6704,6706,6708,6710,6712,6714,6716,6718,6720,6722,6724,6726],{"class":172,"line":268},[170,6701,1249],{"class":176},[170,6703,1572],{"class":198},[170,6705,1249],{"class":176},[170,6707,1577],{"class":198},[170,6709,1368],{"class":176},[170,6711,1309],{"class":198},[170,6713,1312],{"class":379},[170,6715,2476],{"class":198},[170,6717,2479],{"class":379},[170,6719,1876],{"class":176},[170,6721,2484],{"class":198},[170,6723,1939],{"class":176},[170,6725,2489],{"class":198},[170,6727,1945],{"class":176},[170,6729,6730,6732,6734,6736,6738,6740,6742,6744,6746,6748,6750,6752],{"class":172,"line":273},[170,6731,1249],{"class":176},[170,6733,1610],{"class":198},[170,6735,1954],{"class":176},[170,6737,1309],{"class":198},[170,6739,1312],{"class":379},[170,6741,2476],{"class":198},[170,6743,2479],{"class":379},[170,6745,1876],{"class":176},[170,6747,2512],{"class":198},[170,6749,1300],{"class":176},[170,6751,2517],{"class":198},[170,6753,1975],{"class":176},[170,6755,6756,6758,6760,6762,6764,6766,6768,6770,6772,6774,6776,6778],{"class":172,"line":289},[170,6757,1249],{"class":176},[170,6759,1982],{"class":198},[170,6761,1330],{"class":176},[170,6763,1309],{"class":198},[170,6765,1312],{"class":379},[170,6767,2476],{"class":198},[170,6769,2479],{"class":379},[170,6771,1876],{"class":176},[170,6773,2512],{"class":198},[170,6775,1300],{"class":176},[170,6777,2517],{"class":198},[170,6779,1975],{"class":176},[170,6781,6782,6784,6786,6788,6790,6792,6794,6796,6798,6800,6802,6804],{"class":172,"line":295},[170,6783,1249],{"class":176},[170,6785,1645],{"class":198},[170,6787,1261],{"class":176},[170,6789,1309],{"class":198},[170,6791,1312],{"class":379},[170,6793,2476],{"class":198},[170,6795,2479],{"class":379},[170,6797,1876],{"class":176},[170,6799,2566],{"class":198},[170,6801,1330],{"class":176},[170,6803,2571],{"class":198},[170,6805,1603],{"class":176},[170,6807,6808,6810,6812,6814,6816,6818,6820,6822,6824,6826,6828],{"class":172,"line":302},[170,6809,1249],{"class":176},[170,6811,1303],{"class":198},[170,6813,1306],{"class":176},[170,6815,1309],{"class":198},[170,6817,1312],{"class":379},[170,6819,2588],{"class":198},[170,6821,1876],{"class":176},[170,6823,2593],{"class":198},[170,6825,1300],{"class":176},[170,6827,2598],{"class":198},[170,6829,1975],{"class":176},[170,6831,6832,6834,6836,6838,6840,6842,6844,6846,6848,6850,6852],{"class":172,"line":308},[170,6833,1249],{"class":176},[170,6835,1645],{"class":198},[170,6837,1261],{"class":176},[170,6839,1309],{"class":198},[170,6841,1312],{"class":379},[170,6843,2615],{"class":198},[170,6845,1876],{"class":176},[170,6847,2620],{"class":198},[170,6849,1300],{"class":176},[170,6851,2625],{"class":198},[170,6853,1975],{"class":176},[170,6855,6856,6858,6860,6862,6864,6866,6868,6870,6872,6874,6876],{"class":172,"line":314},[170,6857,1249],{"class":176},[170,6859,1610],{"class":198},[170,6861,1954],{"class":176},[170,6863,1309],{"class":198},[170,6865,1312],{"class":379},[170,6867,2642],{"class":198},[170,6869,2645],{"class":176},[170,6871,2648],{"class":198},[170,6873,1939],{"class":176},[170,6875,2653],{"class":198},[170,6877,1945],{"class":176},[170,6879,6880,6882,6884,6886,6888,6890,6892,6894,6896,6898,6900],{"class":172,"line":343},[170,6881,1249],{"class":176},[170,6883,1610],{"class":198},[170,6885,1954],{"class":176},[170,6887,1309],{"class":198},[170,6889,1312],{"class":379},[170,6891,2670],{"class":198},[170,6893,1876],{"class":176},[170,6895,2675],{"class":198},[170,6897,1300],{"class":176},[170,6899,2680],{"class":198},[170,6901,1975],{"class":176},[170,6903,6904,6906,6908,6910,6912,6914,6916,6918,6920,6922,6924,6926,6928],{"class":172,"line":348},[170,6905,1249],{"class":176},[170,6907,1610],{"class":198},[170,6909,1954],{"class":176},[170,6911,1309],{"class":198},[170,6913,1312],{"class":379},[170,6915,2476],{"class":198},[170,6917,2479],{"class":379},[170,6919,2701],{"class":198},[170,6921,2704],{"class":176},[170,6923,2707],{"class":198},[170,6925,1597],{"class":176},[170,6927,2712],{"class":198},[170,6929,2144],{"class":176},[170,6931,6932,6934,6936,6938,6940,6942,6944,6946,6948,6950,6952],{"class":172,"line":353},[170,6933,1249],{"class":176},[170,6935,1303],{"class":198},[170,6937,1306],{"class":176},[170,6939,1309],{"class":198},[170,6941,1312],{"class":379},[170,6943,2729],{"class":198},[170,6945,1554],{"class":176},[170,6947,2734],{"class":198},[170,6949,1261],{"class":176},[170,6951,2739],{"class":198},[170,6953,1668],{"class":176},[170,6955,6956,6958,6960,6962,6964,6966,6968,6970,6972,6974,6976],{"class":172,"line":359},[170,6957,1249],{"class":176},[170,6959,1610],{"class":198},[170,6961,1954],{"class":176},[170,6963,1309],{"class":198},[170,6965,1312],{"class":379},[170,6967,2729],{"class":198},[170,6969,1554],{"class":176},[170,6971,2760],{"class":198},[170,6973,2138],{"class":176},[170,6975,2765],{"class":198},[170,6977,2144],{"class":176},[170,6979,6980,6982,6984,6986,6988,6990,6992,6994,6996,6998,7000],{"class":172,"line":364},[170,6981,1249],{"class":176},[170,6983,1645],{"class":198},[170,6985,1261],{"class":176},[170,6987,1309],{"class":198},[170,6989,1312],{"class":379},[170,6991,2729],{"class":198},[170,6993,1554],{"class":176},[170,6995,2786],{"class":198},[170,6997,1368],{"class":176},[170,6999,2791],{"class":198},[170,7001,2171],{"class":176},[1436,7003,7004],{},[156,7005,7006,7007,7011,7012,4890,7014,4890,7016,4878,7018,7020],{},"Do not forget to define fillable pivot fields as described in ",[445,7008,7010],{"href":7009},"\u002Fguide\u002Frelationships#setting-up-controller","Fillable pivot fields and casting"," section, if you have additional fields on pivot table, otherwise ",[167,7013,426],{},[167,7015,430],{},[167,7017,433],{},[167,7019,436],{}," endpoints may not work as expected for these fields.",[396,7022,7024],{"id":7023},"attaching","Attaching",[156,7026,7027,7028,7030,7031,7034],{},"Many-to-many relation resource provides an ",[167,7029,426],{}," endpoint to attach one or multiple related models to another model. For details on how attaching\u002Fdetaching of related models works in Laravel, take a look at ",[445,7032,2825],{"href":2823,"rel":7033},[449]," section in Laravel Documentation.",[156,7036,7037,7038,7040,7041,7043,7044,7046],{},"The request payload consists of required ",[167,7039,2832],{}," and optional ",[167,7042,2836],{}," fields. Note that the ",[167,7045,2836],{}," field can also be provided as a query parameter.",[156,7048,4884,7049,7051],{},[167,7050,2832],{}," field might be an array or an object. If it is an array, then array items would be IDs of related models that you would like to attach. If it is an object, then its keys would be IDs of related models and values - objects containing pivot table fields to be set upon attaching the related model.",[156,7053,7054,7055,7057,7058,7060,7061,7063],{},"By default, the ",[167,7056,2836],{}," parameter is ",[167,7059,2854],{},". If set to ",[167,7062,2858],{},", attaching the same related model multiple times would result in duplicated entries in the pivot table.",[156,7065,7066],{},[1451,7067,7068],{},"Example request (array version):",[160,7070,7071],{"className":2197,"code":2867,"language":2199,"meta":165,"style":165},[167,7072,7073,7077,7081,7105],{"__ignoreMap":165},[170,7074,7075],{"class":172,"line":173},[170,7076,2874],{"class":298},[170,7078,7079],{"class":172,"line":184},[170,7080,292],{"class":176},[170,7082,7083,7085,7087,7089,7091,7093,7095,7097,7099,7101,7103],{"class":172,"line":191},[170,7084,2215],{"class":176},[170,7086,2832],{"class":276},[170,7088,2220],{"class":176},[170,7090,2223],{"class":176},[170,7092,2891],{"class":176},[170,7094,2894],{"class":194},[170,7096,646],{"class":176},[170,7098,2899],{"class":194},[170,7100,646],{"class":176},[170,7102,2904],{"class":194},[170,7104,2907],{"class":176},[170,7106,7107],{"class":172,"line":221},[170,7108,391],{"class":176},[156,7110,7111],{},[1451,7112,7113],{},"Example request (object version):",[160,7115,7116],{"className":2197,"code":2919,"language":2199,"meta":165,"style":165},[167,7117,7118,7122,7126,7138,7150,7168,7172,7176,7188,7206,7210,7214,7226,7244,7248,7252,7256],{"__ignoreMap":165},[170,7119,7120],{"class":172,"line":173},[170,7121,2874],{"class":298},[170,7123,7124],{"class":172,"line":184},[170,7125,292],{"class":176},[170,7127,7128,7130,7132,7134,7136],{"class":172,"line":191},[170,7129,2215],{"class":176},[170,7131,2832],{"class":276},[170,7133,2220],{"class":176},[170,7135,2223],{"class":176},[170,7137,618],{"class":176},[170,7139,7140,7142,7144,7146,7148],{"class":172,"line":221},[170,7141,2946],{"class":176},[170,7143,2894],{"class":198},[170,7145,2220],{"class":176},[170,7147,2223],{"class":176},[170,7149,618],{"class":176},[170,7151,7152,7154,7156,7158,7160,7162,7164,7166],{"class":172,"line":226},[170,7153,2959],{"class":176},[170,7155,2962],{"class":194},[170,7157,2220],{"class":176},[170,7159,2223],{"class":176},[170,7161,2969],{"class":176},[170,7163,2972],{"class":379},[170,7165,2220],{"class":176},[170,7167,2977],{"class":176},[170,7169,7170],{"class":172,"line":245},[170,7171,2982],{"class":180},[170,7173,7174],{"class":172,"line":268},[170,7175,2987],{"class":176},[170,7177,7178,7180,7182,7184,7186],{"class":172,"line":273},[170,7179,2946],{"class":176},[170,7181,2899],{"class":198},[170,7183,2220],{"class":176},[170,7185,2223],{"class":176},[170,7187,618],{"class":176},[170,7189,7190,7192,7194,7196,7198,7200,7202,7204],{"class":172,"line":289},[170,7191,2959],{"class":176},[170,7193,2962],{"class":194},[170,7195,2220],{"class":176},[170,7197,2223],{"class":176},[170,7199,2969],{"class":176},[170,7201,3014],{"class":379},[170,7203,2220],{"class":176},[170,7205,2977],{"class":176},[170,7207,7208],{"class":172,"line":295},[170,7209,2982],{"class":180},[170,7211,7212],{"class":172,"line":302},[170,7213,2987],{"class":176},[170,7215,7216,7218,7220,7222,7224],{"class":172,"line":308},[170,7217,2946],{"class":176},[170,7219,2904],{"class":198},[170,7221,2220],{"class":176},[170,7223,2223],{"class":176},[170,7225,618],{"class":176},[170,7227,7228,7230,7232,7234,7236,7238,7240,7242],{"class":172,"line":314},[170,7229,2959],{"class":176},[170,7231,2962],{"class":194},[170,7233,2220],{"class":176},[170,7235,2223],{"class":176},[170,7237,2969],{"class":176},[170,7239,3053],{"class":379},[170,7241,2220],{"class":176},[170,7243,2977],{"class":176},[170,7245,7246],{"class":172,"line":343},[170,7247,2982],{"class":180},[170,7249,7250],{"class":172,"line":348},[170,7251,3066],{"class":176},[170,7253,7254],{"class":172,"line":353},[170,7255,3071],{"class":176},[170,7257,7258],{"class":172,"line":359},[170,7259,391],{"class":176},[396,7261,7262],{"id":3274},"Detaching",[156,7264,7265,7266,7268],{},"Many-to-many relation resource provides ",[167,7267,2281],{}," endpoint to detach one or multiple related models from the model they are attached to.",[156,7270,7271,7272,4881],{},"The request payload consists of only one field ",[167,7273,2832],{},[156,7275,7276,7277,7279,7280,7282,7283,7285,7286,4872,7288,7290],{},"Similar to the ",[167,7278,426],{}," endpoint, the ",[167,7281,2832],{}," field might be an array or an object. Supporting object representation of the ",[167,7284,2832],{}," field in this method makes it easier for the frontend to attach\u002Fdetach related resources in a standardized way. You can also optionally store additional data in these objects that can be used in ",[167,7287,3103],{},[167,7289,3106],{}," hooks.",[156,7292,7293],{},[1451,7294,7068],{},[160,7296,7297],{"className":2197,"code":3114,"language":2199,"meta":165,"style":165},[167,7298,7299,7303,7307,7331],{"__ignoreMap":165},[170,7300,7301],{"class":172,"line":173},[170,7302,3121],{"class":298},[170,7304,7305],{"class":172,"line":184},[170,7306,292],{"class":176},[170,7308,7309,7311,7313,7315,7317,7319,7321,7323,7325,7327,7329],{"class":172,"line":191},[170,7310,2215],{"class":176},[170,7312,2832],{"class":276},[170,7314,2220],{"class":176},[170,7316,2223],{"class":176},[170,7318,2891],{"class":176},[170,7320,2894],{"class":194},[170,7322,646],{"class":176},[170,7324,2899],{"class":194},[170,7326,646],{"class":176},[170,7328,2904],{"class":194},[170,7330,2907],{"class":176},[170,7332,7333],{"class":172,"line":221},[170,7334,391],{"class":176},[156,7336,7337],{},[1451,7338,7113],{},[160,7340,7341],{"className":2197,"code":3160,"language":2199,"meta":165,"style":165},[167,7342,7343,7347,7351,7363,7375,7387,7405,7409,7413,7425,7429],{"__ignoreMap":165},[170,7344,7345],{"class":172,"line":173},[170,7346,3121],{"class":298},[170,7348,7349],{"class":172,"line":184},[170,7350,292],{"class":176},[170,7352,7353,7355,7357,7359,7361],{"class":172,"line":191},[170,7354,2215],{"class":176},[170,7356,2832],{"class":276},[170,7358,2220],{"class":176},[170,7360,2223],{"class":176},[170,7362,618],{"class":176},[170,7364,7365,7367,7369,7371,7373],{"class":172,"line":221},[170,7366,2946],{"class":176},[170,7368,2894],{"class":198},[170,7370,2220],{"class":176},[170,7372,2223],{"class":176},[170,7374,3195],{"class":176},[170,7376,7377,7379,7381,7383,7385],{"class":172,"line":226},[170,7378,2946],{"class":176},[170,7380,2899],{"class":198},[170,7382,2220],{"class":176},[170,7384,2223],{"class":176},[170,7386,618],{"class":176},[170,7388,7389,7391,7393,7395,7397,7399,7401,7403],{"class":172,"line":245},[170,7390,2959],{"class":176},[170,7392,3214],{"class":194},[170,7394,2220],{"class":176},[170,7396,2223],{"class":176},[170,7398,2969],{"class":176},[170,7400,3223],{"class":379},[170,7402,2220],{"class":176},[170,7404,2977],{"class":176},[170,7406,7407],{"class":172,"line":268},[170,7408,2982],{"class":180},[170,7410,7411],{"class":172,"line":273},[170,7412,2987],{"class":176},[170,7414,7415,7417,7419,7421,7423],{"class":172,"line":289},[170,7416,2946],{"class":176},[170,7418,2904],{"class":198},[170,7420,2220],{"class":176},[170,7422,2223],{"class":176},[170,7424,3195],{"class":176},[170,7426,7427],{"class":172,"line":295},[170,7428,3071],{"class":176},[170,7430,7431],{"class":172,"line":302},[170,7432,391],{"class":176},[396,7434,7436],{"id":7435},"syncing","Syncing",[156,7438,7439,7440,7442,7443,7034],{},"Many-to-many relation resource provides a ",[167,7441,430],{}," endpoint to sync associations of one or multiple related models with another model. For details on how syncing of related models works in Laravel, take a look at ",[445,7444,3267],{"href":2823,"rel":7445},[449],[156,7447,7037,7448,7040,7450,7043,7452,7046],{},[167,7449,2832],{},[167,7451,3274],{},[167,7453,3274],{},[156,7455,4884,7456,7458],{},[167,7457,2832],{}," field might be an array or an object. If it is an array, then array items would be IDs of related models that you would like to sync. If it is an object, then its keys would be IDs of related models and values - objects containing pivot table fields to be set upon syncing the related model.",[156,7460,7054,7461,7057,7463,7060,7465,7467],{},[167,7462,3274],{},[167,7464,2858],{},[167,7466,2854],{},", related models that are missing in the payload but present in the pivot table won't be detached.",[156,7469,7470],{},[1451,7471,7068],{},[160,7473,7474],{"className":2197,"code":3297,"language":2199,"meta":165,"style":165},[167,7475,7476,7480,7484,7504],{"__ignoreMap":165},[170,7477,7478],{"class":172,"line":173},[170,7479,3304],{"class":298},[170,7481,7482],{"class":172,"line":184},[170,7483,292],{"class":176},[170,7485,7486,7488,7490,7492,7494,7496,7498,7500,7502],{"class":172,"line":191},[170,7487,2215],{"class":176},[170,7489,2832],{"class":276},[170,7491,2220],{"class":176},[170,7493,2223],{"class":176},[170,7495,2891],{"class":176},[170,7497,2894],{"class":194},[170,7499,646],{"class":176},[170,7501,2899],{"class":194},[170,7503,2907],{"class":176},[170,7505,7506],{"class":172,"line":221},[170,7507,391],{"class":176},[156,7509,7510],{},[1451,7511,7113],{},[160,7513,7514],{"className":2197,"code":3339,"language":2199,"meta":165,"style":165},[167,7515,7516,7520,7524,7536,7548,7566,7570,7574,7586,7604,7608,7612,7616],{"__ignoreMap":165},[170,7517,7518],{"class":172,"line":173},[170,7519,3304],{"class":298},[170,7521,7522],{"class":172,"line":184},[170,7523,292],{"class":176},[170,7525,7526,7528,7530,7532,7534],{"class":172,"line":191},[170,7527,2215],{"class":176},[170,7529,2832],{"class":276},[170,7531,2220],{"class":176},[170,7533,2223],{"class":176},[170,7535,618],{"class":176},[170,7537,7538,7540,7542,7544,7546],{"class":172,"line":221},[170,7539,2946],{"class":176},[170,7541,2894],{"class":198},[170,7543,2220],{"class":176},[170,7545,2223],{"class":176},[170,7547,618],{"class":176},[170,7549,7550,7552,7554,7556,7558,7560,7562,7564],{"class":172,"line":226},[170,7551,2959],{"class":176},[170,7553,2962],{"class":194},[170,7555,2220],{"class":176},[170,7557,2223],{"class":176},[170,7559,2969],{"class":176},[170,7561,2972],{"class":379},[170,7563,2220],{"class":176},[170,7565,2977],{"class":176},[170,7567,7568],{"class":172,"line":245},[170,7569,2982],{"class":180},[170,7571,7572],{"class":172,"line":268},[170,7573,2987],{"class":176},[170,7575,7576,7578,7580,7582,7584],{"class":172,"line":273},[170,7577,2946],{"class":176},[170,7579,2899],{"class":198},[170,7581,2220],{"class":176},[170,7583,2223],{"class":176},[170,7585,618],{"class":176},[170,7587,7588,7590,7592,7594,7596,7598,7600,7602],{"class":172,"line":289},[170,7589,2959],{"class":176},[170,7591,2962],{"class":194},[170,7593,2220],{"class":176},[170,7595,2223],{"class":176},[170,7597,2969],{"class":176},[170,7599,3014],{"class":379},[170,7601,2220],{"class":176},[170,7603,2977],{"class":176},[170,7605,7606],{"class":172,"line":295},[170,7607,2982],{"class":180},[170,7609,7610],{"class":172,"line":302},[170,7611,2987],{"class":176},[170,7613,7614],{"class":172,"line":308},[170,7615,3071],{"class":176},[170,7617,7618],{"class":172,"line":314},[170,7619,391],{"class":176},[396,7621,7623],{"id":7622},"toggling","Toggling",[156,7625,7439,7626,7628,7629,7034],{},[167,7627,433],{}," endpoint to \"toggle\" the attachment status of one or multiple related models. For details on how \"toggling\" of related models works in Laravel, take a look at ",[445,7630,3457],{"href":2823,"rel":7631},[449],[156,7633,7271,7634,7636,7637,7639],{},[167,7635,2832],{},". Same as the sync endpoint, the ",[167,7638,2832],{}," field might be an array or an object.",[156,7641,7642],{},[1451,7643,7068],{},[160,7645,7646],{"className":2197,"code":3475,"language":2199,"meta":165,"style":165},[167,7647,7648,7652,7656,7676],{"__ignoreMap":165},[170,7649,7650],{"class":172,"line":173},[170,7651,3482],{"class":298},[170,7653,7654],{"class":172,"line":184},[170,7655,292],{"class":176},[170,7657,7658,7660,7662,7664,7666,7668,7670,7672,7674],{"class":172,"line":191},[170,7659,2215],{"class":176},[170,7661,2832],{"class":276},[170,7663,2220],{"class":176},[170,7665,2223],{"class":176},[170,7667,2891],{"class":176},[170,7669,2894],{"class":194},[170,7671,646],{"class":176},[170,7673,2899],{"class":194},[170,7675,2907],{"class":176},[170,7677,7678],{"class":172,"line":221},[170,7679,391],{"class":176},[156,7681,7682],{},[1451,7683,7113],{},[160,7685,7686],{"className":2197,"code":3517,"language":2199,"meta":165,"style":165},[167,7687,7688,7692,7696,7708,7720,7738,7742,7746,7758,7776,7780,7784,7788],{"__ignoreMap":165},[170,7689,7690],{"class":172,"line":173},[170,7691,3482],{"class":298},[170,7693,7694],{"class":172,"line":184},[170,7695,292],{"class":176},[170,7697,7698,7700,7702,7704,7706],{"class":172,"line":191},[170,7699,2215],{"class":176},[170,7701,2832],{"class":276},[170,7703,2220],{"class":176},[170,7705,2223],{"class":176},[170,7707,618],{"class":176},[170,7709,7710,7712,7714,7716,7718],{"class":172,"line":221},[170,7711,2946],{"class":176},[170,7713,2894],{"class":198},[170,7715,2220],{"class":176},[170,7717,2223],{"class":176},[170,7719,618],{"class":176},[170,7721,7722,7724,7726,7728,7730,7732,7734,7736],{"class":172,"line":226},[170,7723,2959],{"class":176},[170,7725,2962],{"class":194},[170,7727,2220],{"class":176},[170,7729,2223],{"class":176},[170,7731,2969],{"class":176},[170,7733,2972],{"class":379},[170,7735,2220],{"class":176},[170,7737,2977],{"class":176},[170,7739,7740],{"class":172,"line":245},[170,7741,2982],{"class":180},[170,7743,7744],{"class":172,"line":268},[170,7745,2987],{"class":176},[170,7747,7748,7750,7752,7754,7756],{"class":172,"line":273},[170,7749,2946],{"class":176},[170,7751,2899],{"class":198},[170,7753,2220],{"class":176},[170,7755,2223],{"class":176},[170,7757,618],{"class":176},[170,7759,7760,7762,7764,7766,7768,7770,7772,7774],{"class":172,"line":289},[170,7761,2959],{"class":176},[170,7763,2962],{"class":194},[170,7765,2220],{"class":176},[170,7767,2223],{"class":176},[170,7769,2969],{"class":176},[170,7771,3014],{"class":379},[170,7773,2220],{"class":176},[170,7775,2977],{"class":176},[170,7777,7778],{"class":172,"line":295},[170,7779,2982],{"class":180},[170,7781,7782],{"class":172,"line":302},[170,7783,2987],{"class":176},[170,7785,7786],{"class":172,"line":308},[170,7787,3071],{"class":176},[170,7789,7790],{"class":172,"line":314},[170,7791,391],{"class":176},[396,7793,7795],{"id":7794},"updating-pivot","Updating pivot",[156,7797,7439,7798,7800,7801,7034],{},[167,7799,2288],{}," endpoint to update the pivot row of one of the related models. For details on how pivot row is updated, take a look at ",[445,7802,3636],{"href":3634,"rel":7803},[449],[156,7805,7271,7806,7808],{},[167,7807,2288],{},". Its properties are pivot table fields that will be updated for the related model.",[156,7810,7811],{},[1451,7812,6451],{},[160,7814,7816],{"className":2197,"code":7815,"language":2199,"meta":165,"style":165},"\u002F\u002F (PATCH) https:\u002F\u002Fmyapp.com\u002Fapi\u002Fusers\u002F{user}\u002Froles\u002F{role}\u002Fpivot\n{\n    \"pivot\" : { \u002F\u002F properties correspond to the columns in pivot table\n        \"example_pivot_field\" : \"updated value\",\n        \"another_pivot_field\" : \"new value\"\n        ...\n    }\n}\n",[167,7817,7818,7822,7826,7841,7859,7875,7879,7883],{"__ignoreMap":165},[170,7819,7820],{"class":172,"line":173},[170,7821,3655],{"class":298},[170,7823,7824],{"class":172,"line":184},[170,7825,292],{"class":176},[170,7827,7828,7830,7832,7834,7836,7838],{"class":172,"line":191},[170,7829,2215],{"class":176},[170,7831,2288],{"class":276},[170,7833,2220],{"class":176},[170,7835,2223],{"class":176},[170,7837,3672],{"class":176},[170,7839,7840],{"class":298}," \u002F\u002F properties correspond to the columns in pivot table\n",[170,7842,7843,7845,7847,7849,7851,7853,7855,7857],{"class":172,"line":221},[170,7844,2946],{"class":176},[170,7846,2962],{"class":198},[170,7848,2220],{"class":176},[170,7850,2223],{"class":176},[170,7852,2969],{"class":176},[170,7854,3690],{"class":379},[170,7856,2220],{"class":176},[170,7858,2977],{"class":176},[170,7860,7861,7863,7865,7867,7869,7871,7873],{"class":172,"line":226},[170,7862,2946],{"class":176},[170,7864,3701],{"class":198},[170,7866,2220],{"class":176},[170,7868,2223],{"class":176},[170,7870,2969],{"class":176},[170,7872,3710],{"class":379},[170,7874,3713],{"class":176},[170,7876,7877],{"class":172,"line":245},[170,7878,3718],{"class":180},[170,7880,7881],{"class":172,"line":268},[170,7882,3071],{"class":176},[170,7884,7885],{"class":172,"line":273},[170,7886,391],{"class":176},[152,7888,7890],{"id":7889},"customizing-keys","Customizing Keys",[156,7892,7893,7894,7898],{},"Just like ",[445,7895,7897],{"href":7896},"\u002Fguide\u002Fmodels#customizing-keys","model resources",", relation resources are using the primary key to fetch resources from the database.",[396,7900,7902],{"id":7901},"customizing-relation-resource-key","Customizing Relation Resource Key",[160,7904,7906],{"className":162,"code":7905,"language":164,"meta":165,"style":165},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Team;\nuse Orion\\Http\\Controllers\\RelationController;\n\nclass TeamPostsController extends RelationController\n{\n    \u002F**\n     * Fully-qualified model class name\n     *\u002F\n    protected $model = Team::class; \u002F\u002F or \"App\\Models\\Team\"\n    \n    \u002F**\n     * Name of the relationship as it is defined on the Post model\n     *\u002F\n    protected $relation = 'posts';\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'; \u002F\u002F \"slug\" here is the field on the Post model (posts relation)\n    }\n}\n",[167,7907,7908,7914,7918,7938,7942,7958,7978,7982,7992,7996,8000,8004,8008,8029,8033,8037,8041,8045,8063,8067,8071,8076,8080,8088,8092,8104,8108,8123,8127],{"__ignoreMap":165},[170,7909,7910,7912],{"class":172,"line":173},[170,7911,177],{"class":176},[170,7913,181],{"class":180},[170,7915,7916],{"class":172,"line":184},[170,7917,188],{"emptyLinePlaceholder":187},[170,7919,7920,7922,7924,7926,7928,7930,7932,7934,7936],{"class":172,"line":191},[170,7921,195],{"class":194},[170,7923,199],{"class":198},[170,7925,202],{"class":176},[170,7927,205],{"class":198},[170,7929,202],{"class":176},[170,7931,210],{"class":198},[170,7933,202],{"class":176},[170,7935,215],{"class":198},[170,7937,218],{"class":176},[170,7939,7940],{"class":172,"line":221},[170,7941,188],{"emptyLinePlaceholder":187},[170,7943,7944,7946,7948,7950,7952,7954,7956],{"class":172,"line":226},[170,7945,229],{"class":194},[170,7947,199],{"class":180},[170,7949,202],{"class":176},[170,7951,94],{"class":180},[170,7953,202],{"class":176},[170,7955,3794],{"class":180},[170,7957,218],{"class":176},[170,7959,7960,7962,7964,7966,7968,7970,7972,7974,7976],{"class":172,"line":245},[170,7961,229],{"class":194},[170,7963,250],{"class":180},[170,7965,202],{"class":176},[170,7967,205],{"class":180},[170,7969,202],{"class":176},[170,7971,210],{"class":180},[170,7973,202],{"class":176},[170,7975,263],{"class":180},[170,7977,218],{"class":176},[170,7979,7980],{"class":172,"line":268},[170,7981,188],{"emptyLinePlaceholder":187},[170,7983,7984,7986,7988,7990],{"class":172,"line":273},[170,7985,277],{"class":276},[170,7987,3827],{"class":198},[170,7989,283],{"class":276},[170,7991,286],{"class":198},[170,7993,7994],{"class":172,"line":289},[170,7995,292],{"class":176},[170,7997,7998],{"class":172,"line":295},[170,7999,299],{"class":298},[170,8001,8002],{"class":172,"line":302},[170,8003,4795],{"class":298},[170,8005,8006],{"class":172,"line":308},[170,8007,311],{"class":298},[170,8009,8010,8012,8014,8016,8018,8020,8022,8024,8026],{"class":172,"line":314},[170,8011,317],{"class":276},[170,8013,320],{"class":176},[170,8015,323],{"class":180},[170,8017,326],{"class":176},[170,8019,3860],{"class":198},[170,8021,332],{"class":176},[170,8023,277],{"class":194},[170,8025,337],{"class":176},[170,8027,8028],{"class":298}," \u002F\u002F or \"App\\Models\\Team\"\n",[170,8030,8031],{"class":172,"line":343},[170,8032,3874],{"class":180},[170,8034,8035],{"class":172,"line":348},[170,8036,299],{"class":298},[170,8038,8039],{"class":172,"line":353},[170,8040,4833],{"class":298},[170,8042,8043],{"class":172,"line":359},[170,8044,311],{"class":298},[170,8046,8047,8049,8051,8053,8055,8057,8059,8061],{"class":172,"line":364},[170,8048,317],{"class":276},[170,8050,320],{"class":176},[170,8052,371],{"class":180},[170,8054,326],{"class":176},[170,8056,376],{"class":176},[170,8058,690],{"class":379},[170,8060,383],{"class":176},[170,8062,218],{"class":176},[170,8064,8065],{"class":172,"line":388},[170,8066,188],{"emptyLinePlaceholder":187},[170,8068,8069],{"class":172,"line":999},[170,8070,299],{"class":298},[170,8072,8073],{"class":172,"line":1036},[170,8074,8075],{"class":298},"     * The name of the field used to fetch a resource from the database.\n",[170,8077,8078],{"class":172,"line":1041},[170,8079,3922],{"class":298},[170,8081,8082,8084,8086],{"class":172,"line":3925},[170,8083,3928],{"class":298},[170,8085,3932],{"class":3931},[170,8087,3935],{"class":3931},[170,8089,8090],{"class":172,"line":3938},[170,8091,311],{"class":298},[170,8093,8094,8096,8098,8100,8102],{"class":172,"line":3943},[170,8095,317],{"class":276},[170,8097,612],{"class":276},[170,8099,3950],{"class":585},[170,8101,3953],{"class":176},[170,8103,3935],{"class":194},[170,8105,8106],{"class":172,"line":3958},[170,8107,3961],{"class":176},[170,8109,8110,8112,8114,8116,8118,8120],{"class":172,"line":3964},[170,8111,3968],{"class":3967},[170,8113,376],{"class":176},[170,8115,3973],{"class":379},[170,8117,383],{"class":176},[170,8119,337],{"class":176},[170,8121,8122],{"class":298}," \u002F\u002F \"slug\" here is the field on the Post model (posts relation)\n",[170,8124,8125],{"class":172,"line":3983},[170,8126,3071],{"class":176},[170,8128,8129],{"class":172,"line":3988},[170,8130,391],{"class":176},[396,8132,8134],{"id":8133},"customizing-parent-resource-key","Customizing Parent Resource Key",[156,8136,8137,8138,8140],{},"If both parent and relation resources use custom keys, you would also need to override the ",[167,8139,3999],{}," method:",[160,8142,8144],{"className":162,"code":8143,"language":164,"meta":165,"style":165},"\u003C?php\n\nnamespace App\\Http\\Controllers\\Api;\n\nuse App\\Models\\Team;\nuse Orion\\Http\\Controllers\\RelationController;\n\nclass TeamPostsController extends RelationController\n{\n    \u002F**\n     * Fully-qualified model class name\n     *\u002F\n    protected $model = Team::class; \u002F\u002F or \"App\\Models\\Team\"\n    \n    \u002F**\n     * Name of the relationship as it is defined on the Post model\n     *\u002F\n    protected $relation = 'posts';\n\n     \u002F**\n     * The name of the field used to fetch parent resource from the database.\n     *\n     * @return string\n     *\u002F\n    protected function parentKeyName(): string\n    {\n        return 'short_name'; \u002F\u002F \"short_name\" here is the field on the Team model\n    }\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'; \u002F\u002F \"slug\" here is the field on the Post model (posts relation)\n    }\n}\n",[167,8145,8146,8152,8156,8176,8180,8196,8216,8220,8230,8234,8238,8242,8246,8266,8270,8274,8278,8282,8300,8304,8308,8313,8317,8325,8329,8341,8345,8360,8364,8368,8372,8376,8380,8388,8392,8404,8408,8422,8426],{"__ignoreMap":165},[170,8147,8148,8150],{"class":172,"line":173},[170,8149,177],{"class":176},[170,8151,181],{"class":180},[170,8153,8154],{"class":172,"line":184},[170,8155,188],{"emptyLinePlaceholder":187},[170,8157,8158,8160,8162,8164,8166,8168,8170,8172,8174],{"class":172,"line":191},[170,8159,195],{"class":194},[170,8161,199],{"class":198},[170,8163,202],{"class":176},[170,8165,205],{"class":198},[170,8167,202],{"class":176},[170,8169,210],{"class":198},[170,8171,202],{"class":176},[170,8173,215],{"class":198},[170,8175,218],{"class":176},[170,8177,8178],{"class":172,"line":221},[170,8179,188],{"emptyLinePlaceholder":187},[170,8181,8182,8184,8186,8188,8190,8192,8194],{"class":172,"line":226},[170,8183,229],{"class":194},[170,8185,199],{"class":180},[170,8187,202],{"class":176},[170,8189,94],{"class":180},[170,8191,202],{"class":176},[170,8193,3794],{"class":180},[170,8195,218],{"class":176},[170,8197,8198,8200,8202,8204,8206,8208,8210,8212,8214],{"class":172,"line":245},[170,8199,229],{"class":194},[170,8201,250],{"class":180},[170,8203,202],{"class":176},[170,8205,205],{"class":180},[170,8207,202],{"class":176},[170,8209,210],{"class":180},[170,8211,202],{"class":176},[170,8213,263],{"class":180},[170,8215,218],{"class":176},[170,8217,8218],{"class":172,"line":268},[170,8219,188],{"emptyLinePlaceholder":187},[170,8221,8222,8224,8226,8228],{"class":172,"line":273},[170,8223,277],{"class":276},[170,8225,3827],{"class":198},[170,8227,283],{"class":276},[170,8229,286],{"class":198},[170,8231,8232],{"class":172,"line":289},[170,8233,292],{"class":176},[170,8235,8236],{"class":172,"line":295},[170,8237,299],{"class":298},[170,8239,8240],{"class":172,"line":302},[170,8241,4795],{"class":298},[170,8243,8244],{"class":172,"line":308},[170,8245,311],{"class":298},[170,8247,8248,8250,8252,8254,8256,8258,8260,8262,8264],{"class":172,"line":314},[170,8249,317],{"class":276},[170,8251,320],{"class":176},[170,8253,323],{"class":180},[170,8255,326],{"class":176},[170,8257,3860],{"class":198},[170,8259,332],{"class":176},[170,8261,277],{"class":194},[170,8263,337],{"class":176},[170,8265,8028],{"class":298},[170,8267,8268],{"class":172,"line":343},[170,8269,3874],{"class":180},[170,8271,8272],{"class":172,"line":348},[170,8273,299],{"class":298},[170,8275,8276],{"class":172,"line":353},[170,8277,4833],{"class":298},[170,8279,8280],{"class":172,"line":359},[170,8281,311],{"class":298},[170,8283,8284,8286,8288,8290,8292,8294,8296,8298],{"class":172,"line":364},[170,8285,317],{"class":276},[170,8287,320],{"class":176},[170,8289,371],{"class":180},[170,8291,326],{"class":176},[170,8293,376],{"class":176},[170,8295,690],{"class":379},[170,8297,383],{"class":176},[170,8299,218],{"class":176},[170,8301,8302],{"class":172,"line":388},[170,8303,188],{"emptyLinePlaceholder":187},[170,8305,8306],{"class":172,"line":999},[170,8307,4168],{"class":298},[170,8309,8310],{"class":172,"line":1036},[170,8311,8312],{"class":298},"     * The name of the field used to fetch parent resource from the database.\n",[170,8314,8315],{"class":172,"line":1041},[170,8316,3922],{"class":298},[170,8318,8319,8321,8323],{"class":172,"line":3925},[170,8320,3928],{"class":298},[170,8322,3932],{"class":3931},[170,8324,3935],{"class":3931},[170,8326,8327],{"class":172,"line":3938},[170,8328,311],{"class":298},[170,8330,8331,8333,8335,8337,8339],{"class":172,"line":3943},[170,8332,317],{"class":276},[170,8334,612],{"class":276},[170,8336,4198],{"class":585},[170,8338,3953],{"class":176},[170,8340,3935],{"class":194},[170,8342,8343],{"class":172,"line":3958},[170,8344,3961],{"class":176},[170,8346,8347,8349,8351,8353,8355,8357],{"class":172,"line":3964},[170,8348,3968],{"class":3967},[170,8350,376],{"class":176},[170,8352,4215],{"class":379},[170,8354,383],{"class":176},[170,8356,337],{"class":176},[170,8358,8359],{"class":298}," \u002F\u002F \"short_name\" here is the field on the Team model\n",[170,8361,8362],{"class":172,"line":3983},[170,8363,3071],{"class":176},[170,8365,8366],{"class":172,"line":3988},[170,8367,188],{"emptyLinePlaceholder":187},[170,8369,8370],{"class":172,"line":4233},[170,8371,299],{"class":298},[170,8373,8374],{"class":172,"line":4238},[170,8375,8075],{"class":298},[170,8377,8378],{"class":172,"line":4243},[170,8379,3922],{"class":298},[170,8381,8382,8384,8386],{"class":172,"line":4248},[170,8383,3928],{"class":298},[170,8385,3932],{"class":3931},[170,8387,3935],{"class":3931},[170,8389,8390],{"class":172,"line":4257},[170,8391,311],{"class":298},[170,8393,8394,8396,8398,8400,8402],{"class":172,"line":4262},[170,8395,317],{"class":276},[170,8397,612],{"class":276},[170,8399,3950],{"class":585},[170,8401,3953],{"class":176},[170,8403,3935],{"class":194},[170,8405,8406],{"class":172,"line":4275},[170,8407,3961],{"class":176},[170,8409,8410,8412,8414,8416,8418,8420],{"class":172,"line":4280},[170,8411,3968],{"class":3967},[170,8413,376],{"class":176},[170,8415,3973],{"class":379},[170,8417,383],{"class":176},[170,8419,337],{"class":176},[170,8421,8122],{"class":298},[170,8423,8424],{"class":172,"line":4295},[170,8425,3071],{"class":176},[170,8427,8428],{"class":172,"line":4300},[170,8429,391],{"class":176},[152,8431,8433],{"id":8432},"customizing-queries","Customizing Queries",[156,8435,8436,8437,8441],{},"It is possible, same as in ",[445,8438,8440],{"href":8439},"\u002Fguide\u002Fmodels#customizing-queries","model controllers",", to redefine Eloquent queries for each endpoint. The only major difference is that each endpoint in the relation controller also has \"build\" and \"run\" methods for fetching relation's parent model.",[396,8443,8445],{"id":8444},"standard-operations-methods","Standard Operations Methods",[4317,8447,8448,8470],{},[4320,8449,8450],{},[4323,8451,8452,8455,8458,8461,8464,8467],{},[4326,8453,8454],{},"Method",[4326,8456,8457],{},"Build (parent)",[4326,8459,8460],{},"Run (parent)",[4326,8462,8463],{},"Build",[4326,8465,8466],{},"Run",[4326,8468,8469],{},"Perform",[4345,8471,8472,8486,8500,8514,8528,8542],{},[4323,8473,8474,8476,8478,8480,8482,8484],{},[4350,8475,1718],{},[4350,8477,4354],{},[4350,8479,4357],{},[4350,8481,4360],{},[4350,8483,4363],{},[4350,8485,4366],{},[4323,8487,8488,8490,8492,8494,8496,8498],{},[4350,8489,1425],{},[4350,8491,4373],{},[4350,8493,4376],{},[4350,8495,4379],{},[4350,8497,4382],{},[4350,8499,4385],{},[4323,8501,8502,8504,8506,8508,8510,8512],{},[4350,8503,1428],{},[4350,8505,4392],{},[4350,8507,4395],{},[4350,8509,4398],{},[4350,8511,4401],{},[4350,8513,4366],{},[4323,8515,8516,8518,8520,8522,8524,8526],{},[4350,8517,1431],{},[4350,8519,4410],{},[4350,8521,4413],{},[4350,8523,4416],{},[4350,8525,4419],{},[4350,8527,4422],{},[4323,8529,8530,8532,8534,8536,8538,8540],{},[4350,8531,1434],{},[4350,8533,4429],{},[4350,8535,4432],{},[4350,8537,4435],{},[4350,8539,4438],{},[4350,8541,4441],{},[4323,8543,8544,8546,8548,8550,8552,8554],{},[4350,8545,1224],{},[4350,8547,4448],{},[4350,8549,4451],{},[4350,8551,4454],{},[4350,8553,4457],{},[4350,8555,4460],{},[396,8557,8559],{"id":8558},"one-to-many-operations-methods","One to Many Operations Methods",[4317,8561,8562,8578],{},[4320,8563,8564],{},[4323,8565,8566,8568,8570,8572,8574,8576],{},[4326,8567,8454],{},[4326,8569,8457],{},[4326,8571,8460],{},[4326,8573,8463],{},[4326,8575,8466],{},[4326,8577,8469],{},[4345,8579,8580,8594],{},[4323,8581,8582,8584,8586,8588,8590,8592],{},[4350,8583,1732],{},[4350,8585,4490],{},[4350,8587,4493],{},[4350,8589,4496],{},[4350,8591,4499],{},[4350,8593,4502],{},[4323,8595,8596,8598,8600,8602,8604,8606],{},[4350,8597,1735],{},[4350,8599,4509],{},[4350,8601,4512],{},[4350,8603,4515],{},[4350,8605,4518],{},[4350,8607,4521],{},[396,8609,8611],{"id":8610},"many-to-many-operations-methods","Many to Many Operations Methods",[4317,8613,8614,8630],{},[4320,8615,8616],{},[4323,8617,8618,8620,8622,8624,8626,8628],{},[4326,8619,8454],{},[4326,8621,8457],{},[4326,8623,8460],{},[4326,8625,8463],{},[4326,8627,8466],{},[4326,8629,8469],{},[4345,8631,8632,8646,8660,8674,8688],{},[4323,8633,8634,8636,8638,8640,8642,8644],{},[4350,8635,426],{},[4350,8637,4551],{},[4350,8639,4554],{},[4350,8641,4366],{},[4350,8643,4366],{},[4350,8645,4561],{},[4323,8647,8648,8650,8652,8654,8656,8658],{},[4350,8649,2281],{},[4350,8651,4568],{},[4350,8653,4571],{},[4350,8655,4366],{},[4350,8657,4366],{},[4350,8659,4578],{},[4323,8661,8662,8664,8666,8668,8670,8672],{},[4350,8663,430],{},[4350,8665,4585],{},[4350,8667,4588],{},[4350,8669,4366],{},[4350,8671,4366],{},[4350,8673,4595],{},[4323,8675,8676,8678,8680,8682,8684,8686],{},[4350,8677,433],{},[4350,8679,4602],{},[4350,8681,4605],{},[4350,8683,4366],{},[4350,8685,4366],{},[4350,8687,4612],{},[4323,8689,8690,8692,8694,8696,8698,8700],{},[4350,8691,436],{},[4350,8693,4619],{},[4350,8695,4622],{},[4350,8697,4366],{},[4350,8699,4366],{},[4350,8701,4629],{},[457,8703,8704],{"icon":459},[156,8705,8706,8707,8709],{},"You can also customize how attributes are filled on the model by overriding the ",[167,8708,4637],{}," method.",[4640,8711,4642],{},{"title":165,"searchDepth":173,"depth":184,"links":8713},[8714,8717,8720,8721,8725,8732,8736],{"id":4689,"depth":184,"text":4690,"children":8715},[8716],{"id":4865,"depth":191,"text":4866},{"id":4935,"depth":184,"text":4936,"children":8718},[8719],{"id":5438,"depth":191,"text":5439},{"id":5727,"depth":184,"text":5728},{"id":5998,"depth":184,"text":5999,"children":8722},[8723,8724],{"id":6430,"depth":191,"text":6431},{"id":6482,"depth":191,"text":6483},{"id":6498,"depth":184,"text":6499,"children":8726},[8727,8728,8729,8730,8731],{"id":7023,"depth":191,"text":7024},{"id":3274,"depth":191,"text":7262},{"id":7435,"depth":191,"text":7436},{"id":7622,"depth":191,"text":7623},{"id":7794,"depth":191,"text":7795},{"id":7889,"depth":184,"text":7890,"children":8733},[8734,8735],{"id":7901,"depth":191,"text":7902},{"id":8133,"depth":191,"text":8134},{"id":8432,"depth":184,"text":8433,"children":8737},[8738,8739,8740],{"id":8444,"depth":191,"text":8445},{"id":8558,"depth":191,"text":8559},{"id":8610,"depth":191,"text":8611},"Learn how to expose model relationships via API.",{},"\u002Fguide\u002Frelationships",{"title":98,"description":8741},"1.guide\u002F04.relationships","mAfwasijN7YJ7Oxi1j6_MiGBAUb5L-qm9Ai1YjVEGa4",1784394463598]