[{"data":1,"prerenderedAt":3445},["ShallowReactive",2],{"navigation":3,"\u002Fwriting\u002Frelations":307,"\u002Fwriting\u002Frelations-surround":3440},{"3.x":4,"2.x":203},[5,32,61,99,121,147,165],{"title":6,"icon":7,"path":8,"stem":9,"children":10,"page":31},"Getting Started","i-heroicons-star","\u002Fgetting-started","1.getting-started",[11,15,19,23,27],{"title":12,"path":13,"stem":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":16,"path":17,"stem":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":20,"path":21,"stem":22},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":24,"path":25,"stem":26},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F4.configuration",{"title":28,"path":29,"stem":30},"Upgrade guide","\u002Fgetting-started\u002Fupgrade-guide","1.getting-started\u002F5.upgrade-guide",false,{"title":33,"icon":34,"path":35,"stem":36,"children":37,"page":31},"Resources","i-heroicons-document-text","\u002Fresources","2.resources",[38,41,45,49,53,57],{"title":33,"path":39,"stem":40},"\u002Fresources\u002Fresources","2.resources\u002F1.resources",{"title":42,"path":43,"stem":44},"Fields","\u002Fresources\u002Ffields","2.resources\u002F2.fields",{"title":46,"path":47,"stem":48},"Relationships","\u002Fresources\u002Frelations","2.resources\u002F3.relations",{"title":50,"path":51,"stem":52},"Validation","\u002Fresources\u002Fvalidation","2.resources\u002F4.validation",{"title":54,"path":55,"stem":56},"Perimeter","\u002Fresources\u002Fperimeter","2.resources\u002F5.perimeter",{"title":58,"path":59,"stem":60},"Limits","\u002Fresources\u002Flimits","2.resources\u002F6.limits",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":31},"Search","i-heroicons-magnifying-glass","\u002Fsearch","3.search",[67,71,75,79,83,87,91,95],{"title":68,"path":69,"stem":70},"Search overview","\u002Fsearch\u002Foverview","3.search\u002F1.overview",{"title":72,"path":73,"stem":74},"Search filters","\u002Fsearch\u002Ffilters","3.search\u002F2.filters",{"title":76,"path":77,"stem":78},"Sorts and selects","\u002Fsearch\u002Fsorts-and-selects","3.search\u002F3.sorts-and-selects",{"title":80,"path":81,"stem":82},"Includes and aggregates","\u002Fsearch\u002Fincludes-and-aggregates","3.search\u002F4.includes-and-aggregates",{"title":84,"path":85,"stem":86},"Scopes and instructions","\u002Fsearch\u002Fscopes-and-instructions","3.search\u002F5.scopes-and-instructions",{"title":88,"path":89,"stem":90},"Text search","\u002Fsearch\u002Ftext-search","3.search\u002F6.text-search",{"title":92,"path":93,"stem":94},"Search engines","\u002Fsearch\u002Fsearch-engines","3.search\u002F7.search-engines",{"title":96,"path":97,"stem":98},"Searching outside HTTP","\u002Fsearch\u002Foutside-http","3.search\u002F8.outside-http",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":31},"Writing","i-heroicons-pencil-square","\u002Fwriting","4.writing",[105,109,113,117],{"title":106,"path":107,"stem":108},"Mutate","\u002Fwriting\u002Fmutate","4.writing\u002F1.mutate",{"title":110,"path":111,"stem":112},"Writing relations","\u002Fwriting\u002Frelations","4.writing\u002F2.relations",{"title":114,"path":115,"stem":116},"Versioned rows","\u002Fwriting\u002Fversioned-rows","4.writing\u002F3.versioned-rows",{"title":118,"path":119,"stem":120},"Deleting and restoring","\u002Fwriting\u002Fdeleting","4.writing\u002F4.deleting",{"title":122,"icon":123,"path":124,"stem":125,"children":126,"page":31},"Actions and Metrics","i-heroicons-bolt","\u002Factions-and-metrics","5.actions-and-metrics",[127,131,135,139,143],{"title":128,"path":129,"stem":130},"Actions","\u002Factions-and-metrics\u002Factions","5.actions-and-metrics\u002F1.actions",{"title":132,"path":133,"stem":134},"Queued Actions","\u002Factions-and-metrics\u002Fqueued-actions","5.actions-and-metrics\u002F2.queued-actions",{"title":136,"path":137,"stem":138},"Confirmation","\u002Factions-and-metrics\u002Fconfirmation","5.actions-and-metrics\u002F3.confirmation",{"title":140,"path":141,"stem":142},"Metrics","\u002Factions-and-metrics\u002Fmetrics","5.actions-and-metrics\u002F4.metrics",{"title":144,"path":145,"stem":146},"Exports","\u002Factions-and-metrics\u002Fexports","5.actions-and-metrics\u002F5.exports",{"title":148,"icon":149,"path":150,"stem":151,"children":152,"page":31},"Authorization","i-heroicons-lock-closed","\u002Fauthorization","6.authorization",[153,157,161],{"title":154,"path":155,"stem":156},"Policies","\u002Fauthorization\u002Fpolicies","6.authorization\u002F1.policies",{"title":158,"path":159,"stem":160},"Gates","\u002Fauthorization\u002Fgates","6.authorization\u002F2.gates",{"title":162,"path":163,"stem":164},"Decision Cache","\u002Fauthorization\u002Fdecision-cache","6.authorization\u002F3.decision-cache",{"title":166,"icon":167,"path":168,"stem":169,"children":170,"page":31},"Digging Deeper","i-heroicons-list-bullet","\u002Fdigging-deeper","7.digging-deeper",[171,175,179,183,187,191,195,199],{"title":172,"path":173,"stem":174},"Details","\u002Fdigging-deeper\u002Fdetails","7.digging-deeper\u002F1.details",{"title":176,"path":177,"stem":178},"Events and Hooks","\u002Fdigging-deeper\u002Fevents-and-hooks","7.digging-deeper\u002F2.events-and-hooks",{"title":180,"path":181,"stem":182},"Custom Responses","\u002Fdigging-deeper\u002Fresponses","7.digging-deeper\u002F3.responses",{"title":184,"path":185,"stem":186},"OpenAPI Documentation","\u002Fdigging-deeper\u002Fopenapi","7.digging-deeper\u002F4.openapi",{"title":188,"path":189,"stem":190},"Precognition","\u002Fdigging-deeper\u002Fprecognition","7.digging-deeper\u002F5.precognition",{"title":192,"path":193,"stem":194},"Artisan Commands","\u002Fdigging-deeper\u002Fartisan","7.digging-deeper\u002F6.artisan",{"title":196,"path":197,"stem":198},"Laravel Boost Skill","\u002Fdigging-deeper\u002Fai-skill","7.digging-deeper\u002F7.ai-skill",{"title":200,"path":201,"stem":202},"Translations","\u002Fdigging-deeper\u002Ftranslations","7.digging-deeper\u002F8.translations",[204,215,237,260,297],{"title":6,"icon":7,"path":205,"stem":206,"children":207,"page":31},"\u002F2.x\u002Fgetting-started","2.x\u002F1.getting-started",[208,211],{"title":16,"path":209,"stem":210},"\u002F2.x\u002Fgetting-started\u002Finstallation","2.x\u002F1.getting-started\u002F1.installation",{"title":212,"path":213,"stem":214},"Upgrade Guide","\u002F2.x\u002Fgetting-started\u002Fupgrade-guide","2.x\u002F1.getting-started\u002F2.upgrade-guide",{"title":216,"icon":217,"path":218,"stem":219,"children":220,"page":31},"Endpoints","i-heroicons-arrow-uturn-left","\u002F2.x\u002Fendpoints","2.x\u002F2.endpoints",[221,224,227,230,233],{"title":172,"path":222,"stem":223},"\u002F2.x\u002Fendpoints\u002Fdetails","2.x\u002F2.endpoints\u002F1.details",{"title":62,"path":225,"stem":226},"\u002F2.x\u002Fendpoints\u002Fsearch","2.x\u002F2.endpoints\u002F2.search",{"title":106,"path":228,"stem":229},"\u002F2.x\u002Fendpoints\u002Fmutate","2.x\u002F2.endpoints\u002F3.mutate",{"title":128,"path":231,"stem":232},"\u002F2.x\u002Fendpoints\u002Factions","2.x\u002F2.endpoints\u002F4.actions",{"title":234,"path":235,"stem":236},"Delete","\u002F2.x\u002Fendpoints\u002Fdelete","2.x\u002F2.endpoints\u002F5.delete",{"title":33,"icon":34,"path":238,"stem":239,"children":240,"page":31},"\u002F2.x\u002Fresources","2.x\u002F3.resources",[241,245,249,252,256],{"title":242,"path":243,"stem":244},"Basics","\u002F2.x\u002Fresources\u002Fbasics","2.x\u002F3.resources\u002F1.basics",{"title":246,"path":247,"stem":248},"Exposed Data","\u002F2.x\u002Fresources\u002Fexposed-data","2.x\u002F3.resources\u002F2.exposed-data",{"title":46,"path":250,"stem":251},"\u002F2.x\u002Fresources\u002Frelationships","2.x\u002F3.resources\u002F3.relationships",{"title":253,"path":254,"stem":255},"Validations","\u002F2.x\u002Fresources\u002Fvalidations","2.x\u002F3.resources\u002F4.validations",{"title":257,"path":258,"stem":259},"Interactions","\u002F2.x\u002Fresources\u002Finteractions","2.x\u002F3.resources\u002F5.interactions",{"title":166,"icon":167,"path":261,"stem":262,"children":263,"page":31},"\u002F2.x\u002Fdigging-deeper","2.x\u002F4.digging-deeper",[264,267,271,274,278,282,286,290,294],{"title":128,"path":265,"stem":266},"\u002F2.x\u002Fdigging-deeper\u002Factions","2.x\u002F4.digging-deeper\u002F1.actions",{"title":268,"path":269,"stem":270},"Hooks","\u002F2.x\u002Fdigging-deeper\u002Fhooks","2.x\u002F4.digging-deeper\u002F2.hooks",{"title":158,"path":272,"stem":273},"\u002F2.x\u002Fdigging-deeper\u002Fgates","2.x\u002F4.digging-deeper\u002F3.gates",{"title":275,"path":276,"stem":277},"Authorizations","\u002F2.x\u002Fdigging-deeper\u002Fauthorizations","2.x\u002F4.digging-deeper\u002F4.authorizations",{"title":279,"path":280,"stem":281},"Full Text Search","\u002F2.x\u002Fdigging-deeper\u002Ffull-text-search","2.x\u002F4.digging-deeper\u002F5.full-text-search",{"title":283,"path":284,"stem":285},"Instructions","\u002F2.x\u002Fdigging-deeper\u002Finstructions","2.x\u002F4.digging-deeper\u002F6.instructions",{"title":287,"path":288,"stem":289},"Responses","\u002F2.x\u002Fdigging-deeper\u002Fresponses","2.x\u002F4.digging-deeper\u002F7.responses",{"title":291,"path":292,"stem":293},"Documentation","\u002F2.x\u002Fdigging-deeper\u002Fdocumentation","2.x\u002F4.digging-deeper\u002F8.documentation",{"title":188,"path":295,"stem":296},"\u002F2.x\u002Fdigging-deeper\u002Fprecognition","2.x\u002F4.digging-deeper\u002F9.precognition",{"title":298,"icon":299,"path":300,"stem":301,"children":302,"page":31},"Integrations","i-lucide-puzzle","\u002F2.x\u002Fintegrations","2.x\u002F5.integrations",[303],{"title":304,"path":305,"stem":306},"Flutter","\u002F2.x\u002Fintegrations\u002Fflutter","2.x\u002F5.integrations\u002F1.flutter",{"id":308,"title":110,"body":309,"description":3433,"extension":3434,"links":3435,"meta":3436,"navigation":457,"path":111,"seo":3437,"sitemap":3438,"stem":112,"__hash__":3439},"docs3x\u002F4.writing\u002F2.relations.md",{"type":310,"value":311,"toc":3423},"minimark",[312,321,686,691,893,950,1421,1750,1754,1807,1811,1861,2057,2060,2064,2073,2108,2336,2535,2672,2676,2748,2753,2756,2987,3065,3211,3215,3218,3288,3396,3419],[313,314,315,316,320],"p",{},"The entries under ",[317,318,319],"code",{},"relations"," write the related rows of a row. The operations that an entry accepts depend on the family of the relation.",[322,323,329],"pre",{"className":324,"code":325,"filename":326,"language":327,"meta":328,"style":328},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use Lomkit\\Rest\\Fields\\Integer;\nuse Lomkit\\Rest\\Fields\\Text;\nuse Lomkit\\Rest\\Relations\\BelongsTo;\nuse Lomkit\\Rest\\Relations\\BelongsToMany;\nuse Lomkit\\Rest\\Relations\\HasMany;\n\npublic function relations(): array\n{\n    return [\n        BelongsTo::make('company', CompanyResource::class),\n        HasMany::make('tickets', TicketResource::class)->deletable(),\n        BelongsToMany::make('members', UserResource::class)->pivotFields([\n            Text::make('role')->creationRules('required'),\n            Integer::make('weight')->nullable(),\n        ]),\n    ];\n}\n","app\u002FRest\u002FResources\u002FTeamResource.php","php","",[317,330,331,363,385,408,430,452,459,479,485,495,534,571,607,642,668,674,680],{"__ignoreMap":328},[332,333,336,340,344,348,351,353,355,357,360],"span",{"class":334,"line":335},"line",1,[332,337,339],{"class":338},"sbssI","use",[332,341,343],{"class":342},"sTEyZ"," Lomkit",[332,345,347],{"class":346},"sMK4o","\\",[332,349,350],{"class":342},"Rest",[332,352,347],{"class":346},[332,354,42],{"class":342},[332,356,347],{"class":346},[332,358,359],{"class":342},"Integer",[332,361,362],{"class":346},";\n",[332,364,366,368,370,372,374,376,378,380,383],{"class":334,"line":365},2,[332,367,339],{"class":338},[332,369,343],{"class":342},[332,371,347],{"class":346},[332,373,350],{"class":342},[332,375,347],{"class":346},[332,377,42],{"class":342},[332,379,347],{"class":346},[332,381,382],{"class":342},"Text",[332,384,362],{"class":346},[332,386,388,390,392,394,396,398,401,403,406],{"class":334,"line":387},3,[332,389,339],{"class":338},[332,391,343],{"class":342},[332,393,347],{"class":346},[332,395,350],{"class":342},[332,397,347],{"class":346},[332,399,400],{"class":342},"Relations",[332,402,347],{"class":346},[332,404,405],{"class":342},"BelongsTo",[332,407,362],{"class":346},[332,409,411,413,415,417,419,421,423,425,428],{"class":334,"line":410},4,[332,412,339],{"class":338},[332,414,343],{"class":342},[332,416,347],{"class":346},[332,418,350],{"class":342},[332,420,347],{"class":346},[332,422,400],{"class":342},[332,424,347],{"class":346},[332,426,427],{"class":342},"BelongsToMany",[332,429,362],{"class":346},[332,431,433,435,437,439,441,443,445,447,450],{"class":334,"line":432},5,[332,434,339],{"class":338},[332,436,343],{"class":342},[332,438,347],{"class":346},[332,440,350],{"class":342},[332,442,347],{"class":346},[332,444,400],{"class":342},[332,446,347],{"class":346},[332,448,449],{"class":342},"HasMany",[332,451,362],{"class":346},[332,453,455],{"class":334,"line":454},6,[332,456,458],{"emptyLinePlaceholder":457},true,"\n",[332,460,462,466,469,473,476],{"class":334,"line":461},7,[332,463,465],{"class":464},"spNyl","public",[332,467,468],{"class":464}," function",[332,470,472],{"class":471},"s2Zo4"," relations",[332,474,475],{"class":346},"():",[332,477,478],{"class":338}," array\n",[332,480,482],{"class":334,"line":481},8,[332,483,484],{"class":346},"{\n",[332,486,488,492],{"class":334,"line":487},9,[332,489,491],{"class":490},"s7zQu","    return",[332,493,494],{"class":346}," [\n",[332,496,498,502,505,508,511,514,518,520,523,526,528,531],{"class":334,"line":497},10,[332,499,501],{"class":500},"sBMFI","        BelongsTo",[332,503,504],{"class":346},"::",[332,506,507],{"class":471},"make",[332,509,510],{"class":346},"(",[332,512,513],{"class":346},"'",[332,515,517],{"class":516},"sfazB","company",[332,519,513],{"class":346},[332,521,522],{"class":346},",",[332,524,525],{"class":500}," CompanyResource",[332,527,504],{"class":346},[332,529,530],{"class":338},"class",[332,532,533],{"class":346},"),\n",[332,535,537,540,542,544,546,548,551,553,555,558,560,562,565,568],{"class":334,"line":536},11,[332,538,539],{"class":500},"        HasMany",[332,541,504],{"class":346},[332,543,507],{"class":471},[332,545,510],{"class":346},[332,547,513],{"class":346},[332,549,550],{"class":516},"tickets",[332,552,513],{"class":346},[332,554,522],{"class":346},[332,556,557],{"class":500}," TicketResource",[332,559,504],{"class":346},[332,561,530],{"class":338},[332,563,564],{"class":346},")->",[332,566,567],{"class":471},"deletable",[332,569,570],{"class":346},"(),\n",[332,572,574,577,579,581,583,585,588,590,592,595,597,599,601,604],{"class":334,"line":573},12,[332,575,576],{"class":500},"        BelongsToMany",[332,578,504],{"class":346},[332,580,507],{"class":471},[332,582,510],{"class":346},[332,584,513],{"class":346},[332,586,587],{"class":516},"members",[332,589,513],{"class":346},[332,591,522],{"class":346},[332,593,594],{"class":500}," UserResource",[332,596,504],{"class":346},[332,598,530],{"class":338},[332,600,564],{"class":346},[332,602,603],{"class":471},"pivotFields",[332,605,606],{"class":346},"([\n",[332,608,610,613,615,617,619,621,624,626,628,631,633,635,638,640],{"class":334,"line":609},13,[332,611,612],{"class":500},"            Text",[332,614,504],{"class":346},[332,616,507],{"class":471},[332,618,510],{"class":346},[332,620,513],{"class":346},[332,622,623],{"class":516},"role",[332,625,513],{"class":346},[332,627,564],{"class":346},[332,629,630],{"class":471},"creationRules",[332,632,510],{"class":346},[332,634,513],{"class":346},[332,636,637],{"class":516},"required",[332,639,513],{"class":346},[332,641,533],{"class":346},[332,643,645,648,650,652,654,656,659,661,663,666],{"class":334,"line":644},14,[332,646,647],{"class":500},"            Integer",[332,649,504],{"class":346},[332,651,507],{"class":471},[332,653,510],{"class":346},[332,655,513],{"class":346},[332,657,658],{"class":516},"weight",[332,660,513],{"class":346},[332,662,564],{"class":346},[332,664,665],{"class":471},"nullable",[332,667,570],{"class":346},[332,669,671],{"class":334,"line":670},15,[332,672,673],{"class":346},"        ]),\n",[332,675,677],{"class":334,"line":676},16,[332,678,679],{"class":346},"    ];\n",[332,681,683],{"class":334,"line":682},17,[332,684,685],{"class":346},"}\n",[687,688,690],"h2",{"id":689},"operations-by-relation-family","Operations by relation family",[692,693,694,742],"table",{},[695,696,697],"thead",{},[698,699,700,704,707,712,717,722,727,732,737],"tr",{},[701,702,703],"th",{},"Relation",[701,705,706],{},"Entries",[701,708,709],{},[317,710,711],{},"create",[701,713,714],{},[317,715,716],{},"update",[701,718,719],{},[317,720,721],{},"attach",[701,723,724],{},[317,725,726],{},"detach",[701,728,729],{},[317,730,731],{},"sync",[701,733,734],{},[317,735,736],{},"toggle",[701,738,739],{},[317,740,741],{},"delete",[743,744,745,774,810,838,866],"tbody",{},[698,746,747,756,759,762,764,766,768,770,772],{},[748,749,750,752,753],"td",{},[317,751,405],{},", ",[317,754,755],{},"MorphTo",[748,757,758],{},"One object",[748,760,761],{},"Yes",[748,763,761],{},[748,765,761],{},[748,767,761],{},[748,769],{},[748,771],{},[748,773],{},[698,775,776,790,792,794,796,798,800,802,804],{},[748,777,778,752,781,752,784,752,787],{},[317,779,780],{},"HasOne",[317,782,783],{},"HasOneOfMany",[317,785,786],{},"MorphOne",[317,788,789],{},"MorphOneOfMany",[748,791,758],{},[748,793,761],{},[748,795,761],{},[748,797,761],{},[748,799,761],{},[748,801],{},[748,803],{},[748,805,806,807],{},"With ",[317,808,809],{},"deletable()",[698,811,812,819,822,824,826,828,830,832,834],{},[748,813,814,752,816],{},[317,815,449],{},[317,817,818],{},"MorphMany",[748,820,821],{},"A list",[748,823,761],{},[748,825,761],{},[748,827,761],{},[748,829,761],{},[748,831],{},[748,833],{},[748,835,806,836],{},[317,837,809],{},[698,839,840,850,852,854,856,858,860,862,864],{},[748,841,842,752,844,752,847],{},[317,843,427],{},[317,845,846],{},"MorphToMany",[317,848,849],{},"MorphedByMany",[748,851,821],{},[748,853,761],{},[748,855,761],{},[748,857,761],{},[748,859,761],{},[748,861,761],{},[748,863,761],{},[748,865],{},[698,867,868,876,879,881,883,885,887,889,891],{},[748,869,870,752,873],{},[317,871,872],{},"HasOneThrough",[317,874,875],{},"HasManyThrough",[748,877,878],{},"None",[748,880],{},[748,882],{},[748,884],{},[748,886],{},[748,888],{},[748,890],{},[748,892],{},[894,895,896,903,910,934],"ul",{},[897,898,899,900],"li",{},"An operation that the relation does not take gives ",[317,901,902],{},"The selected mutate.0.relations.products.0.operation is invalid.",[897,904,905,906,909],{},"A to-many relation takes a list of entries, and ",[317,907,908],{},"key"," there can be a list of keys. A to-one relation takes one object.",[897,911,912,913,916,917,920,921,924,925,927,928,930,931,933],{},"A custom relation lists its operations in ",[317,914,915],{},"mutationOperations()",", as ",[317,918,919],{},"Lomkit\\Rest\\Fields\\MutationOperation"," cases. A relation that returns ",[317,922,923],{},"[]"," takes no entry. ",[317,926,741],{}," comes from ",[317,929,809],{}," only: a ",[317,932,234],{}," case in that list is ignored.",[897,935,936,937,941,942,945,946,949],{},"The ",[938,939,940],"a",{"href":173},"details"," list the operations that each relation accepts, under ",[317,943,944],{},"operations",", with ",[317,947,948],{},"?with=relations.operations",".",[322,951,956],{"className":952,"code":953,"filename":954,"language":955,"meta":328,"style":328},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"mutate\": [\n    {\n      \"operation\": \"update\",\n      \"key\": 1,\n      \"relations\": {\n        \"company\": {\"operation\": \"attach\", \"key\": 4},\n        \"tickets\": [\n          {\"operation\": \"create\", \"attributes\": {\"title\": \"Printer jam\"}},\n          {\"operation\": \"update\", \"key\": 12, \"attributes\": {\"status\": \"closed\"}},\n          {\"operation\": \"detach\", \"key\": 13}\n        ],\n        \"members\": [\n          {\"operation\": \"attach\", \"key\": [7, 8], \"pivot\": {\"role\": \"agent\"}},\n          {\"operation\": \"sync\", \"key\": [9], \"without_detaching\": true, \"pivot\": {\"weight\": 2}}\n        ]\n      }\n    }\n  ]\n}\n","POST \u002Fapi\u002Fteams\u002Fmutate","json",[317,957,958,962,978,983,1005,1020,1033,1078,1090,1142,1203,1236,1241,1253,1323,1394,1399,1404,1410,1416],{"__ignoreMap":328},[332,959,960],{"class":334,"line":335},[332,961,484],{"class":346},[332,963,964,967,970,973,976],{"class":334,"line":365},[332,965,966],{"class":346},"  \"",[332,968,969],{"class":464},"mutate",[332,971,972],{"class":346},"\"",[332,974,975],{"class":346},":",[332,977,494],{"class":346},[332,979,980],{"class":334,"line":387},[332,981,982],{"class":346},"    {\n",[332,984,985,988,991,993,995,998,1000,1002],{"class":334,"line":410},[332,986,987],{"class":346},"      \"",[332,989,990],{"class":500},"operation",[332,992,972],{"class":346},[332,994,975],{"class":346},[332,996,997],{"class":346}," \"",[332,999,716],{"class":516},[332,1001,972],{"class":346},[332,1003,1004],{"class":346},",\n",[332,1006,1007,1009,1011,1013,1015,1018],{"class":334,"line":432},[332,1008,987],{"class":346},[332,1010,908],{"class":500},[332,1012,972],{"class":346},[332,1014,975],{"class":346},[332,1016,1017],{"class":338}," 1",[332,1019,1004],{"class":346},[332,1021,1022,1024,1026,1028,1030],{"class":334,"line":454},[332,1023,987],{"class":346},[332,1025,319],{"class":500},[332,1027,972],{"class":346},[332,1029,975],{"class":346},[332,1031,1032],{"class":346}," {\n",[332,1034,1035,1038,1040,1042,1044,1047,1049,1052,1054,1056,1058,1060,1062,1064,1066,1068,1070,1072,1075],{"class":334,"line":461},[332,1036,1037],{"class":346},"        \"",[332,1039,517],{"class":338},[332,1041,972],{"class":346},[332,1043,975],{"class":346},[332,1045,1046],{"class":346}," {",[332,1048,972],{"class":346},[332,1050,990],{"class":1051},"swJcz",[332,1053,972],{"class":346},[332,1055,975],{"class":346},[332,1057,997],{"class":346},[332,1059,721],{"class":516},[332,1061,972],{"class":346},[332,1063,522],{"class":346},[332,1065,997],{"class":346},[332,1067,908],{"class":1051},[332,1069,972],{"class":346},[332,1071,975],{"class":346},[332,1073,1074],{"class":338}," 4",[332,1076,1077],{"class":346},"},\n",[332,1079,1080,1082,1084,1086,1088],{"class":334,"line":481},[332,1081,1037],{"class":346},[332,1083,550],{"class":338},[332,1085,972],{"class":346},[332,1087,975],{"class":346},[332,1089,494],{"class":346},[332,1091,1092,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113,1116,1118,1120,1122,1124,1128,1130,1132,1134,1137,1139],{"class":334,"line":487},[332,1093,1094],{"class":346},"          {",[332,1096,972],{"class":346},[332,1098,990],{"class":1051},[332,1100,972],{"class":346},[332,1102,975],{"class":346},[332,1104,997],{"class":346},[332,1106,711],{"class":516},[332,1108,972],{"class":346},[332,1110,522],{"class":346},[332,1112,997],{"class":346},[332,1114,1115],{"class":1051},"attributes",[332,1117,972],{"class":346},[332,1119,975],{"class":346},[332,1121,1046],{"class":346},[332,1123,972],{"class":346},[332,1125,1127],{"class":1126},"su27w","title",[332,1129,972],{"class":346},[332,1131,975],{"class":346},[332,1133,997],{"class":346},[332,1135,1136],{"class":516},"Printer jam",[332,1138,972],{"class":346},[332,1140,1141],{"class":346},"}},\n",[332,1143,1144,1146,1148,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1173,1175,1177,1179,1181,1183,1185,1187,1190,1192,1194,1196,1199,1201],{"class":334,"line":497},[332,1145,1094],{"class":346},[332,1147,972],{"class":346},[332,1149,990],{"class":1051},[332,1151,972],{"class":346},[332,1153,975],{"class":346},[332,1155,997],{"class":346},[332,1157,716],{"class":516},[332,1159,972],{"class":346},[332,1161,522],{"class":346},[332,1163,997],{"class":346},[332,1165,908],{"class":1051},[332,1167,972],{"class":346},[332,1169,975],{"class":346},[332,1171,1172],{"class":338}," 12",[332,1174,522],{"class":346},[332,1176,997],{"class":346},[332,1178,1115],{"class":1051},[332,1180,972],{"class":346},[332,1182,975],{"class":346},[332,1184,1046],{"class":346},[332,1186,972],{"class":346},[332,1188,1189],{"class":1126},"status",[332,1191,972],{"class":346},[332,1193,975],{"class":346},[332,1195,997],{"class":346},[332,1197,1198],{"class":516},"closed",[332,1200,972],{"class":346},[332,1202,1141],{"class":346},[332,1204,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1234],{"class":334,"line":536},[332,1206,1094],{"class":346},[332,1208,972],{"class":346},[332,1210,990],{"class":1051},[332,1212,972],{"class":346},[332,1214,975],{"class":346},[332,1216,997],{"class":346},[332,1218,726],{"class":516},[332,1220,972],{"class":346},[332,1222,522],{"class":346},[332,1224,997],{"class":346},[332,1226,908],{"class":1051},[332,1228,972],{"class":346},[332,1230,975],{"class":346},[332,1232,1233],{"class":338}," 13",[332,1235,685],{"class":346},[332,1237,1238],{"class":334,"line":573},[332,1239,1240],{"class":346},"        ],\n",[332,1242,1243,1245,1247,1249,1251],{"class":334,"line":609},[332,1244,1037],{"class":346},[332,1246,587],{"class":338},[332,1248,972],{"class":346},[332,1250,975],{"class":346},[332,1252,494],{"class":346},[332,1254,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1284,1287,1289,1292,1295,1297,1300,1302,1304,1306,1308,1310,1312,1314,1316,1319,1321],{"class":334,"line":644},[332,1256,1094],{"class":346},[332,1258,972],{"class":346},[332,1260,990],{"class":1051},[332,1262,972],{"class":346},[332,1264,975],{"class":346},[332,1266,997],{"class":346},[332,1268,721],{"class":516},[332,1270,972],{"class":346},[332,1272,522],{"class":346},[332,1274,997],{"class":346},[332,1276,908],{"class":1051},[332,1278,972],{"class":346},[332,1280,975],{"class":346},[332,1282,1283],{"class":346}," [",[332,1285,1286],{"class":338},"7",[332,1288,522],{"class":346},[332,1290,1291],{"class":338}," 8",[332,1293,1294],{"class":346},"],",[332,1296,997],{"class":346},[332,1298,1299],{"class":1051},"pivot",[332,1301,972],{"class":346},[332,1303,975],{"class":346},[332,1305,1046],{"class":346},[332,1307,972],{"class":346},[332,1309,623],{"class":1126},[332,1311,972],{"class":346},[332,1313,975],{"class":346},[332,1315,997],{"class":346},[332,1317,1318],{"class":516},"agent",[332,1320,972],{"class":346},[332,1322,1141],{"class":346},[332,1324,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1356,1358,1360,1363,1365,1367,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388,1391],{"class":334,"line":670},[332,1326,1094],{"class":346},[332,1328,972],{"class":346},[332,1330,990],{"class":1051},[332,1332,972],{"class":346},[332,1334,975],{"class":346},[332,1336,997],{"class":346},[332,1338,731],{"class":516},[332,1340,972],{"class":346},[332,1342,522],{"class":346},[332,1344,997],{"class":346},[332,1346,908],{"class":1051},[332,1348,972],{"class":346},[332,1350,975],{"class":346},[332,1352,1283],{"class":346},[332,1354,1355],{"class":338},"9",[332,1357,1294],{"class":346},[332,1359,997],{"class":346},[332,1361,1362],{"class":1051},"without_detaching",[332,1364,972],{"class":346},[332,1366,975],{"class":346},[332,1368,1369],{"class":346}," true,",[332,1371,997],{"class":346},[332,1373,1299],{"class":1051},[332,1375,972],{"class":346},[332,1377,975],{"class":346},[332,1379,1046],{"class":346},[332,1381,972],{"class":346},[332,1383,658],{"class":1126},[332,1385,972],{"class":346},[332,1387,975],{"class":346},[332,1389,1390],{"class":338}," 2",[332,1392,1393],{"class":346},"}}\n",[332,1395,1396],{"class":334,"line":676},[332,1397,1398],{"class":346},"        ]\n",[332,1400,1401],{"class":334,"line":682},[332,1402,1403],{"class":346},"      }\n",[332,1405,1407],{"class":334,"line":1406},18,[332,1408,1409],{"class":346},"    }\n",[332,1411,1413],{"class":334,"line":1412},19,[332,1414,1415],{"class":346},"  ]\n",[332,1417,1419],{"class":334,"line":1418},20,[332,1420,685],{"class":346},[322,1422,1425],{"className":952,"code":1423,"filename":1424,"language":955,"meta":328,"style":328},"{\n  \"operations\": [\n    {\n      \"operation\": \"update\",\n      \"key\": 1,\n      \"relations\": {\n        \"company\": {\"operation\": \"attach\", \"key\": 4},\n        \"tickets\": [\n          {\"operation\": \"create\", \"key\": 31},\n          {\"operation\": \"update\", \"key\": 12},\n          {\"operation\": \"detach\", \"key\": 13}\n        ],\n        \"members\": [\n          {\"operation\": \"attach\", \"key\": [7, 8]},\n          {\"operation\": \"sync\", \"key\": [9]}\n        ]\n      }\n    }\n  ]\n}\n","200 OK",[317,1426,1427,1431,1443,1447,1465,1479,1491,1531,1543,1576,1608,1640,1644,1656,1695,1730,1734,1738,1742,1746],{"__ignoreMap":328},[332,1428,1429],{"class":334,"line":335},[332,1430,484],{"class":346},[332,1432,1433,1435,1437,1439,1441],{"class":334,"line":365},[332,1434,966],{"class":346},[332,1436,944],{"class":464},[332,1438,972],{"class":346},[332,1440,975],{"class":346},[332,1442,494],{"class":346},[332,1444,1445],{"class":334,"line":387},[332,1446,982],{"class":346},[332,1448,1449,1451,1453,1455,1457,1459,1461,1463],{"class":334,"line":410},[332,1450,987],{"class":346},[332,1452,990],{"class":500},[332,1454,972],{"class":346},[332,1456,975],{"class":346},[332,1458,997],{"class":346},[332,1460,716],{"class":516},[332,1462,972],{"class":346},[332,1464,1004],{"class":346},[332,1466,1467,1469,1471,1473,1475,1477],{"class":334,"line":432},[332,1468,987],{"class":346},[332,1470,908],{"class":500},[332,1472,972],{"class":346},[332,1474,975],{"class":346},[332,1476,1017],{"class":338},[332,1478,1004],{"class":346},[332,1480,1481,1483,1485,1487,1489],{"class":334,"line":454},[332,1482,987],{"class":346},[332,1484,319],{"class":500},[332,1486,972],{"class":346},[332,1488,975],{"class":346},[332,1490,1032],{"class":346},[332,1492,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529],{"class":334,"line":461},[332,1494,1037],{"class":346},[332,1496,517],{"class":338},[332,1498,972],{"class":346},[332,1500,975],{"class":346},[332,1502,1046],{"class":346},[332,1504,972],{"class":346},[332,1506,990],{"class":1051},[332,1508,972],{"class":346},[332,1510,975],{"class":346},[332,1512,997],{"class":346},[332,1514,721],{"class":516},[332,1516,972],{"class":346},[332,1518,522],{"class":346},[332,1520,997],{"class":346},[332,1522,908],{"class":1051},[332,1524,972],{"class":346},[332,1526,975],{"class":346},[332,1528,1074],{"class":338},[332,1530,1077],{"class":346},[332,1532,1533,1535,1537,1539,1541],{"class":334,"line":481},[332,1534,1037],{"class":346},[332,1536,550],{"class":338},[332,1538,972],{"class":346},[332,1540,975],{"class":346},[332,1542,494],{"class":346},[332,1544,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571,1574],{"class":334,"line":487},[332,1546,1094],{"class":346},[332,1548,972],{"class":346},[332,1550,990],{"class":1051},[332,1552,972],{"class":346},[332,1554,975],{"class":346},[332,1556,997],{"class":346},[332,1558,711],{"class":516},[332,1560,972],{"class":346},[332,1562,522],{"class":346},[332,1564,997],{"class":346},[332,1566,908],{"class":1051},[332,1568,972],{"class":346},[332,1570,975],{"class":346},[332,1572,1573],{"class":338}," 31",[332,1575,1077],{"class":346},[332,1577,1578,1580,1582,1584,1586,1588,1590,1592,1594,1596,1598,1600,1602,1604,1606],{"class":334,"line":497},[332,1579,1094],{"class":346},[332,1581,972],{"class":346},[332,1583,990],{"class":1051},[332,1585,972],{"class":346},[332,1587,975],{"class":346},[332,1589,997],{"class":346},[332,1591,716],{"class":516},[332,1593,972],{"class":346},[332,1595,522],{"class":346},[332,1597,997],{"class":346},[332,1599,908],{"class":1051},[332,1601,972],{"class":346},[332,1603,975],{"class":346},[332,1605,1172],{"class":338},[332,1607,1077],{"class":346},[332,1609,1610,1612,1614,1616,1618,1620,1622,1624,1626,1628,1630,1632,1634,1636,1638],{"class":334,"line":536},[332,1611,1094],{"class":346},[332,1613,972],{"class":346},[332,1615,990],{"class":1051},[332,1617,972],{"class":346},[332,1619,975],{"class":346},[332,1621,997],{"class":346},[332,1623,726],{"class":516},[332,1625,972],{"class":346},[332,1627,522],{"class":346},[332,1629,997],{"class":346},[332,1631,908],{"class":1051},[332,1633,972],{"class":346},[332,1635,975],{"class":346},[332,1637,1233],{"class":338},[332,1639,685],{"class":346},[332,1641,1642],{"class":334,"line":573},[332,1643,1240],{"class":346},[332,1645,1646,1648,1650,1652,1654],{"class":334,"line":609},[332,1647,1037],{"class":346},[332,1649,587],{"class":338},[332,1651,972],{"class":346},[332,1653,975],{"class":346},[332,1655,494],{"class":346},[332,1657,1658,1660,1662,1664,1666,1668,1670,1672,1674,1676,1678,1680,1682,1684,1686,1688,1690,1692],{"class":334,"line":644},[332,1659,1094],{"class":346},[332,1661,972],{"class":346},[332,1663,990],{"class":1051},[332,1665,972],{"class":346},[332,1667,975],{"class":346},[332,1669,997],{"class":346},[332,1671,721],{"class":516},[332,1673,972],{"class":346},[332,1675,522],{"class":346},[332,1677,997],{"class":346},[332,1679,908],{"class":1051},[332,1681,972],{"class":346},[332,1683,975],{"class":346},[332,1685,1283],{"class":346},[332,1687,1286],{"class":338},[332,1689,522],{"class":346},[332,1691,1291],{"class":338},[332,1693,1694],{"class":346},"]},\n",[332,1696,1697,1699,1701,1703,1705,1707,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727],{"class":334,"line":670},[332,1698,1094],{"class":346},[332,1700,972],{"class":346},[332,1702,990],{"class":1051},[332,1704,972],{"class":346},[332,1706,975],{"class":346},[332,1708,997],{"class":346},[332,1710,731],{"class":516},[332,1712,972],{"class":346},[332,1714,522],{"class":346},[332,1716,997],{"class":346},[332,1718,908],{"class":1051},[332,1720,972],{"class":346},[332,1722,975],{"class":346},[332,1724,1283],{"class":346},[332,1726,1355],{"class":338},[332,1728,1729],{"class":346},"]}\n",[332,1731,1732],{"class":334,"line":676},[332,1733,1398],{"class":346},[332,1735,1736],{"class":334,"line":682},[332,1737,1403],{"class":346},[332,1739,1740],{"class":334,"line":1406},[332,1741,1409],{"class":346},[332,1743,1744],{"class":334,"line":1412},[332,1745,1415],{"class":346},[332,1747,1748],{"class":334,"line":1418},[332,1749,685],{"class":346},[687,1751,1753],{"id":1752},"owner-relations-belongsto-and-morphto","Owner relations: BelongsTo and MorphTo",[894,1755,1756,1764,1782,1798],{},[897,1757,1758,1760,1761,1763],{},[317,1759,711],{}," writes a new owner, ",[317,1762,721],{}," links an existing one, and both set the foreign key of the row. The entry is written before the row that holds it.",[897,1765,1766,1768,1769,1771,1772,1775,1776,1778,1779],{},[317,1767,726],{}," names the current owner of the row, and on a ",[317,1770,755],{}," its ",[317,1773,1774],{},"type",". Another row, or a ",[317,1777,726],{}," under a created row, gives ",[317,1780,1781],{},"The selected mutate.0.relations.author.key is invalid.",[897,1783,1784,1785,1787,1788,1790,1791,1794,1795,1797],{},"A ",[317,1786,755],{}," entry sends ",[317,1789,1774],{},", its morph type, required when the relation has several targets: ",[317,1792,1793],{},"{\"operation\": \"attach\", \"type\": \"book\", \"key\": 2}",". Its response entry answers ",[317,1796,1774],{}," too.",[897,1799,1800,1801,1803,1804,949],{},"When a resource keeps the morph type column of a ",[317,1802,755],{}," writable, the column accepts the morph types of its targets only. Declare the morph columns ",[317,1805,1806],{},"readonly()",[687,1808,1810],{"id":1809},"child-relations-hasone-hasmany-and-the-morph-forms","Child relations: HasOne, HasMany and the morph forms",[894,1812,1813,1822,1834,1839,1844],{},[897,1814,1815,1817,1818,1821],{},[317,1816,711],{}," writes a child with the key of the parent, and on the morph relations its morph type (",[317,1819,1820],{},"getMorphClass()",", so the morph-map alias).",[897,1823,1824,1826,1827,1829,1830,1833],{},[317,1825,716],{}," and ",[317,1828,726],{}," reach only a child of the parent: a row whose foreign key, and morph type, names the parent. Another row gives ",[317,1831,1832],{},"The selected mutate.0.relations.tickets.0.key is invalid.",", and so does any row under a created parent.",[897,1835,1836,1838],{},[317,1837,721],{}," takes a row of another parent and moves it.",[897,1840,1841,1843],{},[317,1842,726],{}," clears the foreign key of the child, and the morph type on the morph relations.",[897,1845,1846,1826,1848,1850,1851,1853,1854,1856,1857,1860],{},[317,1847,721],{},[317,1849,711],{}," under a ",[317,1852,780],{}," or ",[317,1855,786],{}," relation give a 422 while the parent already has a related row: ",[317,1858,1859],{},"The mutate.0.relations.loan field is prohibited: this relation already holds a record. Detach it first."," Detach the current row in an entry written before. The of-many forms take another row.",[322,1862,1865],{"className":952,"code":1863,"filename":1864,"language":955,"meta":328,"style":328},"{\n  \"mutate\": [\n    {\"operation\": \"update\", \"key\": 2, \"relations\": {\"loan\": {\"operation\": \"detach\", \"key\": 5}}},\n    {\"operation\": \"update\", \"key\": 2, \"relations\": {\"loan\": {\"operation\": \"attach\", \"key\": 7}}}\n  ]\n}\n","POST \u002Fapi\u002Fbooks\u002Fmutate",[317,1866,1867,1871,1883,1967,2049,2053],{"__ignoreMap":328},[332,1868,1869],{"class":334,"line":335},[332,1870,484],{"class":346},[332,1872,1873,1875,1877,1879,1881],{"class":334,"line":365},[332,1874,966],{"class":346},[332,1876,969],{"class":464},[332,1878,972],{"class":346},[332,1880,975],{"class":346},[332,1882,494],{"class":346},[332,1884,1885,1888,1890,1892,1894,1896,1898,1900,1902,1904,1906,1908,1910,1912,1914,1916,1918,1920,1922,1924,1926,1928,1931,1933,1935,1937,1939,1941,1943,1945,1947,1949,1951,1953,1955,1957,1959,1961,1964],{"class":334,"line":387},[332,1886,1887],{"class":346},"    {",[332,1889,972],{"class":346},[332,1891,990],{"class":500},[332,1893,972],{"class":346},[332,1895,975],{"class":346},[332,1897,997],{"class":346},[332,1899,716],{"class":516},[332,1901,972],{"class":346},[332,1903,522],{"class":346},[332,1905,997],{"class":346},[332,1907,908],{"class":500},[332,1909,972],{"class":346},[332,1911,975],{"class":346},[332,1913,1390],{"class":338},[332,1915,522],{"class":346},[332,1917,997],{"class":346},[332,1919,319],{"class":500},[332,1921,972],{"class":346},[332,1923,975],{"class":346},[332,1925,1046],{"class":346},[332,1927,972],{"class":346},[332,1929,1930],{"class":338},"loan",[332,1932,972],{"class":346},[332,1934,975],{"class":346},[332,1936,1046],{"class":346},[332,1938,972],{"class":346},[332,1940,990],{"class":1051},[332,1942,972],{"class":346},[332,1944,975],{"class":346},[332,1946,997],{"class":346},[332,1948,726],{"class":516},[332,1950,972],{"class":346},[332,1952,522],{"class":346},[332,1954,997],{"class":346},[332,1956,908],{"class":1051},[332,1958,972],{"class":346},[332,1960,975],{"class":346},[332,1962,1963],{"class":338}," 5",[332,1965,1966],{"class":346},"}}},\n",[332,1968,1969,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001,2003,2005,2007,2009,2011,2013,2015,2017,2019,2021,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041,2043,2046],{"class":334,"line":410},[332,1970,1887],{"class":346},[332,1972,972],{"class":346},[332,1974,990],{"class":500},[332,1976,972],{"class":346},[332,1978,975],{"class":346},[332,1980,997],{"class":346},[332,1982,716],{"class":516},[332,1984,972],{"class":346},[332,1986,522],{"class":346},[332,1988,997],{"class":346},[332,1990,908],{"class":500},[332,1992,972],{"class":346},[332,1994,975],{"class":346},[332,1996,1390],{"class":338},[332,1998,522],{"class":346},[332,2000,997],{"class":346},[332,2002,319],{"class":500},[332,2004,972],{"class":346},[332,2006,975],{"class":346},[332,2008,1046],{"class":346},[332,2010,972],{"class":346},[332,2012,1930],{"class":338},[332,2014,972],{"class":346},[332,2016,975],{"class":346},[332,2018,1046],{"class":346},[332,2020,972],{"class":346},[332,2022,990],{"class":1051},[332,2024,972],{"class":346},[332,2026,975],{"class":346},[332,2028,997],{"class":346},[332,2030,721],{"class":516},[332,2032,972],{"class":346},[332,2034,522],{"class":346},[332,2036,997],{"class":346},[332,2038,908],{"class":1051},[332,2040,972],{"class":346},[332,2042,975],{"class":346},[332,2044,2045],{"class":338}," 7",[332,2047,2048],{"class":346},"}}}\n",[332,2050,2051],{"class":334,"line":432},[332,2052,1415],{"class":346},[332,2054,2055],{"class":334,"line":454},[332,2056,685],{"class":346},[313,2058,2059],{},"These checks run during validation, before any policy, hook or write, in the order of the entries: an entry sees what the entries before it attach, detach, create and delete.",[687,2061,2063],{"id":2062},"deleting-child-rows","Deleting child rows",[313,2065,2066,2067,2069,2070,2072],{},"A child relation that declares ",[317,2068,809],{}," accepts ",[317,2071,741],{}," entries: the rows are deleted in the transaction of the mutation, next to the other writes.",[322,2074,2076],{"className":324,"code":2075,"language":327,"meta":328,"style":328},"HasMany::make('tickets', TicketResource::class)->deletable(),\n",[317,2077,2078],{"__ignoreMap":328},[332,2079,2080,2082,2084,2086,2088,2090,2092,2094,2096,2098,2100,2102,2104,2106],{"class":334,"line":335},[332,2081,449],{"class":500},[332,2083,504],{"class":346},[332,2085,507],{"class":471},[332,2087,510],{"class":346},[332,2089,513],{"class":346},[332,2091,550],{"class":516},[332,2093,513],{"class":346},[332,2095,522],{"class":346},[332,2097,557],{"class":500},[332,2099,504],{"class":346},[332,2101,530],{"class":338},[332,2103,564],{"class":346},[332,2105,567],{"class":471},[332,2107,570],{"class":346},[322,2109,2111],{"className":952,"code":2110,"filename":954,"language":955,"meta":328,"style":328},"{\n  \"mutate\": [\n    {\n      \"operation\": \"update\",\n      \"key\": 101,\n      \"relations\": {\n        \"tickets\": [\n          {\"operation\": \"update\", \"key\": 101, \"attributes\": {\"status\": \"closed\"}},\n          {\"operation\": \"delete\", \"key\": [103]},\n          {\"operation\": \"delete\", \"key\": 102}\n        ]\n      }\n    }\n  ]\n}\n",[317,2112,2113,2117,2129,2133,2151,2166,2178,2190,2248,2283,2316,2320,2324,2328,2332],{"__ignoreMap":328},[332,2114,2115],{"class":334,"line":335},[332,2116,484],{"class":346},[332,2118,2119,2121,2123,2125,2127],{"class":334,"line":365},[332,2120,966],{"class":346},[332,2122,969],{"class":464},[332,2124,972],{"class":346},[332,2126,975],{"class":346},[332,2128,494],{"class":346},[332,2130,2131],{"class":334,"line":387},[332,2132,982],{"class":346},[332,2134,2135,2137,2139,2141,2143,2145,2147,2149],{"class":334,"line":410},[332,2136,987],{"class":346},[332,2138,990],{"class":500},[332,2140,972],{"class":346},[332,2142,975],{"class":346},[332,2144,997],{"class":346},[332,2146,716],{"class":516},[332,2148,972],{"class":346},[332,2150,1004],{"class":346},[332,2152,2153,2155,2157,2159,2161,2164],{"class":334,"line":432},[332,2154,987],{"class":346},[332,2156,908],{"class":500},[332,2158,972],{"class":346},[332,2160,975],{"class":346},[332,2162,2163],{"class":338}," 101",[332,2165,1004],{"class":346},[332,2167,2168,2170,2172,2174,2176],{"class":334,"line":454},[332,2169,987],{"class":346},[332,2171,319],{"class":500},[332,2173,972],{"class":346},[332,2175,975],{"class":346},[332,2177,1032],{"class":346},[332,2179,2180,2182,2184,2186,2188],{"class":334,"line":461},[332,2181,1037],{"class":346},[332,2183,550],{"class":338},[332,2185,972],{"class":346},[332,2187,975],{"class":346},[332,2189,494],{"class":346},[332,2191,2192,2194,2196,2198,2200,2202,2204,2206,2208,2210,2212,2214,2216,2218,2220,2222,2224,2226,2228,2230,2232,2234,2236,2238,2240,2242,2244,2246],{"class":334,"line":481},[332,2193,1094],{"class":346},[332,2195,972],{"class":346},[332,2197,990],{"class":1051},[332,2199,972],{"class":346},[332,2201,975],{"class":346},[332,2203,997],{"class":346},[332,2205,716],{"class":516},[332,2207,972],{"class":346},[332,2209,522],{"class":346},[332,2211,997],{"class":346},[332,2213,908],{"class":1051},[332,2215,972],{"class":346},[332,2217,975],{"class":346},[332,2219,2163],{"class":338},[332,2221,522],{"class":346},[332,2223,997],{"class":346},[332,2225,1115],{"class":1051},[332,2227,972],{"class":346},[332,2229,975],{"class":346},[332,2231,1046],{"class":346},[332,2233,972],{"class":346},[332,2235,1189],{"class":1126},[332,2237,972],{"class":346},[332,2239,975],{"class":346},[332,2241,997],{"class":346},[332,2243,1198],{"class":516},[332,2245,972],{"class":346},[332,2247,1141],{"class":346},[332,2249,2250,2252,2254,2256,2258,2260,2262,2264,2266,2268,2270,2272,2274,2276,2278,2281],{"class":334,"line":487},[332,2251,1094],{"class":346},[332,2253,972],{"class":346},[332,2255,990],{"class":1051},[332,2257,972],{"class":346},[332,2259,975],{"class":346},[332,2261,997],{"class":346},[332,2263,741],{"class":516},[332,2265,972],{"class":346},[332,2267,522],{"class":346},[332,2269,997],{"class":346},[332,2271,908],{"class":1051},[332,2273,972],{"class":346},[332,2275,975],{"class":346},[332,2277,1283],{"class":346},[332,2279,2280],{"class":338},"103",[332,2282,1694],{"class":346},[332,2284,2285,2287,2289,2291,2293,2295,2297,2299,2301,2303,2305,2307,2309,2311,2314],{"class":334,"line":497},[332,2286,1094],{"class":346},[332,2288,972],{"class":346},[332,2290,990],{"class":1051},[332,2292,972],{"class":346},[332,2294,975],{"class":346},[332,2296,997],{"class":346},[332,2298,741],{"class":516},[332,2300,972],{"class":346},[332,2302,522],{"class":346},[332,2304,997],{"class":346},[332,2306,908],{"class":1051},[332,2308,972],{"class":346},[332,2310,975],{"class":346},[332,2312,2313],{"class":338}," 102",[332,2315,685],{"class":346},[332,2317,2318],{"class":334,"line":536},[332,2319,1398],{"class":346},[332,2321,2322],{"class":334,"line":573},[332,2323,1403],{"class":346},[332,2325,2326],{"class":334,"line":609},[332,2327,1409],{"class":346},[332,2329,2330],{"class":334,"line":644},[332,2331,1415],{"class":346},[332,2333,2334],{"class":334,"line":670},[332,2335,685],{"class":346},[322,2337,2339],{"className":952,"code":2338,"filename":1424,"language":955,"meta":328,"style":328},"{\n  \"operations\": [\n    {\n      \"operation\": \"update\",\n      \"key\": 101,\n      \"relations\": {\n        \"tickets\": [\n          {\"operation\": \"update\", \"key\": 101},\n          {\"operation\": \"delete\", \"key\": [103]},\n          {\"operation\": \"delete\", \"key\": 102}\n        ]\n      }\n    }\n  ]\n}\n",[317,2340,2341,2345,2357,2361,2379,2393,2405,2417,2449,2483,2515,2519,2523,2527,2531],{"__ignoreMap":328},[332,2342,2343],{"class":334,"line":335},[332,2344,484],{"class":346},[332,2346,2347,2349,2351,2353,2355],{"class":334,"line":365},[332,2348,966],{"class":346},[332,2350,944],{"class":464},[332,2352,972],{"class":346},[332,2354,975],{"class":346},[332,2356,494],{"class":346},[332,2358,2359],{"class":334,"line":387},[332,2360,982],{"class":346},[332,2362,2363,2365,2367,2369,2371,2373,2375,2377],{"class":334,"line":410},[332,2364,987],{"class":346},[332,2366,990],{"class":500},[332,2368,972],{"class":346},[332,2370,975],{"class":346},[332,2372,997],{"class":346},[332,2374,716],{"class":516},[332,2376,972],{"class":346},[332,2378,1004],{"class":346},[332,2380,2381,2383,2385,2387,2389,2391],{"class":334,"line":432},[332,2382,987],{"class":346},[332,2384,908],{"class":500},[332,2386,972],{"class":346},[332,2388,975],{"class":346},[332,2390,2163],{"class":338},[332,2392,1004],{"class":346},[332,2394,2395,2397,2399,2401,2403],{"class":334,"line":454},[332,2396,987],{"class":346},[332,2398,319],{"class":500},[332,2400,972],{"class":346},[332,2402,975],{"class":346},[332,2404,1032],{"class":346},[332,2406,2407,2409,2411,2413,2415],{"class":334,"line":461},[332,2408,1037],{"class":346},[332,2410,550],{"class":338},[332,2412,972],{"class":346},[332,2414,975],{"class":346},[332,2416,494],{"class":346},[332,2418,2419,2421,2423,2425,2427,2429,2431,2433,2435,2437,2439,2441,2443,2445,2447],{"class":334,"line":481},[332,2420,1094],{"class":346},[332,2422,972],{"class":346},[332,2424,990],{"class":1051},[332,2426,972],{"class":346},[332,2428,975],{"class":346},[332,2430,997],{"class":346},[332,2432,716],{"class":516},[332,2434,972],{"class":346},[332,2436,522],{"class":346},[332,2438,997],{"class":346},[332,2440,908],{"class":1051},[332,2442,972],{"class":346},[332,2444,975],{"class":346},[332,2446,2163],{"class":338},[332,2448,1077],{"class":346},[332,2450,2451,2453,2455,2457,2459,2461,2463,2465,2467,2469,2471,2473,2475,2477,2479,2481],{"class":334,"line":487},[332,2452,1094],{"class":346},[332,2454,972],{"class":346},[332,2456,990],{"class":1051},[332,2458,972],{"class":346},[332,2460,975],{"class":346},[332,2462,997],{"class":346},[332,2464,741],{"class":516},[332,2466,972],{"class":346},[332,2468,522],{"class":346},[332,2470,997],{"class":346},[332,2472,908],{"class":1051},[332,2474,972],{"class":346},[332,2476,975],{"class":346},[332,2478,1283],{"class":346},[332,2480,2280],{"class":338},[332,2482,1694],{"class":346},[332,2484,2485,2487,2489,2491,2493,2495,2497,2499,2501,2503,2505,2507,2509,2511,2513],{"class":334,"line":497},[332,2486,1094],{"class":346},[332,2488,972],{"class":346},[332,2490,990],{"class":1051},[332,2492,972],{"class":346},[332,2494,975],{"class":346},[332,2496,997],{"class":346},[332,2498,741],{"class":516},[332,2500,972],{"class":346},[332,2502,522],{"class":346},[332,2504,997],{"class":346},[332,2506,908],{"class":1051},[332,2508,972],{"class":346},[332,2510,975],{"class":346},[332,2512,2313],{"class":338},[332,2514,685],{"class":346},[332,2516,2517],{"class":334,"line":536},[332,2518,1398],{"class":346},[332,2520,2521],{"class":334,"line":573},[332,2522,1403],{"class":346},[332,2524,2525],{"class":334,"line":609},[332,2526,1409],{"class":346},[332,2528,2529],{"class":334,"line":644},[332,2530,1415],{"class":346},[332,2532,2533],{"class":334,"line":670},[332,2534,685],{"class":346},[894,2536,2537,2569,2586,2595,2601,2624,2635,2663],{},[897,2538,2539,2541,2542,752,2544,752,2546,752,2548,752,2550,1826,2552,2554,2555,2557,2558,752,2560,2562,2563,2565,2566],{},[317,2540,809],{}," exists on ",[317,2543,780],{},[317,2545,783],{},[317,2547,449],{},[317,2549,786],{},[317,2551,789],{},[317,2553,818],{},". Without it, at the root of ",[317,2556,969],{},", and on ",[317,2559,405],{},[317,2561,755],{}," and many-to-many relations, ",[317,2564,741],{}," gives ",[317,2567,2568],{},"The selected mutate.0.relations.tickets.0.operation is invalid.",[897,2570,2571,2573,2574,2576,2577,2579,2580,2582,2583],{},[317,2572,908],{}," is a key, or a list of keys under a to-many relation. A ",[317,2575,741],{}," entry takes no ",[317,2578,1115],{}," and no ",[317,2581,319],{},": ",[317,2584,2585],{},"The mutate.0.relations.tickets.0.attributes field is prohibited when mutate.0.relations.tickets.0.operation is delete.",[897,2587,2588,2589,2592,2593],{},"Each key must name a child of the parent that the ",[317,2590,2591],{},"perimeterQuery()"," of the related resource returns, when the entry is written. Another key gives ",[317,2594,1832],{},[897,2596,2597,2598],{},"A deleted row that another entry of the request also names gives ",[317,2599,2600],{},"The mutate.0.relations.tickets.1.key field has a duplicate value.",[897,2602,2603,2604,2606,2607,2610,2611,2613,2614,2616,2617,2619,2620,2623],{},"Before any write, each row is checked with the ",[317,2605,741],{}," ability of the related resource, as on ",[317,2608,2609],{},"destroy",", and with the link check of ",[317,2612,726],{},": the ",[317,2615,726],{}," ability of the relation, or else ",[317,2618,716],{}," on the parent. A refusal answers ",[317,2621,2622],{},"403",", and nothing is written.",[897,2625,2626,2627,2630,2631,2634],{},"The row goes through the ",[317,2628,2629],{},"performDelete()"," of the related resource: a ",[317,2632,2633],{},"SoftDeletes"," model is soft deleted, never force deleted, and the model events run.",[897,2636,2637,752,2640,1826,2643,2646,2647,752,2650,752,2653,1826,2656,2659,2660,2662],{},[317,2638,2639],{},"mutatingAll()",[317,2641,2642],{},"mutatedAll()",[317,2644,2645],{},"ResourceMutated"," see the deletions. The ",[317,2648,2649],{},"destroying()",[317,2651,2652],{},"destroyed()",[317,2654,2655],{},"destroyingAll()",[317,2657,2658],{},"destroyedAll()"," hooks of the ",[317,2661,2609],{}," endpoint do not run: put a rule that holds on both endpoints in the policy or in a model observer.",[897,2664,2665,2666,2582,2669],{},"Each deleted key counts as one entry toward ",[317,2667,2668],{},"rest.limits.sizes.relation_entries",[317,2670,2671],{},"The mutate.0.relations.tickets field goes over the limit of 100 entries, each deleted key counting as one entry.",[687,2673,2675],{"id":2674},"many-to-many-relations","Many-to-many relations",[894,2677,2678,2689,2701,2711,2718,2740],{},[897,2679,2680,2682,2683,2685,2686,2688],{},[317,2681,711],{}," writes a related row and its pivot row. ",[317,2684,721],{}," adds pivot rows for existing rows. ",[317,2687,726],{}," removes them.",[897,2690,2691,2693,2694,2697,2698,2700],{},[317,2692,731],{}," keeps exactly the listed keys among the attached rows, and with ",[317,2695,2696],{},"\"without_detaching\": true"," only adds the missing ones. ",[317,2699,736],{}," attaches each listed key that is not attached, and detaches each listed key that is.",[897,2702,2703,1826,2705,2707,2708,2710],{},[317,2704,731],{},[317,2706,736],{}," compare their keys with the attached rows that the ",[317,2709,2591],{}," of the related resource returns. Other attached rows stay.",[897,2712,2713,1826,2715,2717],{},[317,2714,731],{},[317,2716,736],{}," answer the keys that they sent. The rows that they detach or attach besides these keys are not listed.",[897,2719,2720,752,2722,1826,2724,2726,2727,2729,2730,1826,2732,2734,2735,2582,2737],{},[317,2721,716],{},[317,2723,731],{},[317,2725,736],{}," accept ",[317,2728,1115],{}," for the related row, with its updatable fields. ",[317,2731,721],{},[317,2733,726],{}," take no ",[317,2736,1115],{},[317,2738,2739],{},"The mutate.0.relations.tags.0.attributes field is prohibited when mutate.0.relations.tags.0.operation is attach.",[897,2741,2742,2744,2745],{},[317,2743,1362],{}," on another operation gives ",[317,2746,2747],{},"The mutate.0.without_detaching field is prohibited unless mutate.0.operation is in sync.",[2749,2750,2752],"h3",{"id":2751},"pivot-fields","Pivot fields",[313,2754,2755],{},"A many-to-many relation declares its pivot columns with typed fields:",[322,2757,2759],{"className":324,"code":2758,"language":327,"meta":328,"style":328},"use Lomkit\\Rest\\Fields\\DateTime;\nuse Lomkit\\Rest\\Fields\\Integer;\nuse Lomkit\\Rest\\Fields\\Text;\n\nBelongsToMany::make('tags', TagResource::class)->pivotFields([\n    Integer::make('weight')->nullable()->rules('min:0'),\n    Text::make('added_by')->updatable(false),     \u002F\u002F written on create and attach only\n    Text::make('note')->writeOnly(),              \u002F\u002F written, never returned\n    DateTime::make('created_at')->readonly(),     \u002F\u002F returned, never written\n]),\n",[317,2760,2761,2782,2802,2822,2826,2858,2896,2926,2954,2982],{"__ignoreMap":328},[332,2762,2763,2765,2767,2769,2771,2773,2775,2777,2780],{"class":334,"line":335},[332,2764,339],{"class":338},[332,2766,343],{"class":342},[332,2768,347],{"class":346},[332,2770,350],{"class":342},[332,2772,347],{"class":346},[332,2774,42],{"class":342},[332,2776,347],{"class":346},[332,2778,2779],{"class":342},"DateTime",[332,2781,362],{"class":346},[332,2783,2784,2786,2788,2790,2792,2794,2796,2798,2800],{"class":334,"line":365},[332,2785,339],{"class":338},[332,2787,343],{"class":342},[332,2789,347],{"class":346},[332,2791,350],{"class":342},[332,2793,347],{"class":346},[332,2795,42],{"class":342},[332,2797,347],{"class":346},[332,2799,359],{"class":342},[332,2801,362],{"class":346},[332,2803,2804,2806,2808,2810,2812,2814,2816,2818,2820],{"class":334,"line":387},[332,2805,339],{"class":338},[332,2807,343],{"class":342},[332,2809,347],{"class":346},[332,2811,350],{"class":342},[332,2813,347],{"class":346},[332,2815,42],{"class":342},[332,2817,347],{"class":346},[332,2819,382],{"class":342},[332,2821,362],{"class":346},[332,2823,2824],{"class":334,"line":410},[332,2825,458],{"emptyLinePlaceholder":457},[332,2827,2828,2830,2832,2834,2836,2838,2841,2843,2845,2848,2850,2852,2854,2856],{"class":334,"line":432},[332,2829,427],{"class":500},[332,2831,504],{"class":346},[332,2833,507],{"class":471},[332,2835,510],{"class":346},[332,2837,513],{"class":346},[332,2839,2840],{"class":516},"tags",[332,2842,513],{"class":346},[332,2844,522],{"class":346},[332,2846,2847],{"class":500}," TagResource",[332,2849,504],{"class":346},[332,2851,530],{"class":338},[332,2853,564],{"class":346},[332,2855,603],{"class":471},[332,2857,606],{"class":346},[332,2859,2860,2863,2865,2867,2869,2871,2873,2875,2877,2879,2882,2885,2887,2889,2892,2894],{"class":334,"line":454},[332,2861,2862],{"class":500},"    Integer",[332,2864,504],{"class":346},[332,2866,507],{"class":471},[332,2868,510],{"class":346},[332,2870,513],{"class":346},[332,2872,658],{"class":516},[332,2874,513],{"class":346},[332,2876,564],{"class":346},[332,2878,665],{"class":471},[332,2880,2881],{"class":346},"()->",[332,2883,2884],{"class":471},"rules",[332,2886,510],{"class":346},[332,2888,513],{"class":346},[332,2890,2891],{"class":516},"min:0",[332,2893,513],{"class":346},[332,2895,533],{"class":346},[332,2897,2898,2901,2903,2905,2907,2909,2912,2914,2916,2919,2922],{"class":334,"line":461},[332,2899,2900],{"class":500},"    Text",[332,2902,504],{"class":346},[332,2904,507],{"class":471},[332,2906,510],{"class":346},[332,2908,513],{"class":346},[332,2910,2911],{"class":516},"added_by",[332,2913,513],{"class":346},[332,2915,564],{"class":346},[332,2917,2918],{"class":471},"updatable",[332,2920,2921],{"class":346},"(false),",[332,2923,2925],{"class":2924},"sHwdD","     \u002F\u002F written on create and attach only\n",[332,2927,2928,2930,2932,2934,2936,2938,2941,2943,2945,2948,2951],{"class":334,"line":481},[332,2929,2900],{"class":500},[332,2931,504],{"class":346},[332,2933,507],{"class":471},[332,2935,510],{"class":346},[332,2937,513],{"class":346},[332,2939,2940],{"class":516},"note",[332,2942,513],{"class":346},[332,2944,564],{"class":346},[332,2946,2947],{"class":471},"writeOnly",[332,2949,2950],{"class":346},"(),",[332,2952,2953],{"class":2924},"              \u002F\u002F written, never returned\n",[332,2955,2956,2959,2961,2963,2965,2967,2970,2972,2974,2977,2979],{"class":334,"line":487},[332,2957,2958],{"class":500},"    DateTime",[332,2960,504],{"class":346},[332,2962,507],{"class":471},[332,2964,510],{"class":346},[332,2966,513],{"class":346},[332,2968,2969],{"class":516},"created_at",[332,2971,513],{"class":346},[332,2973,564],{"class":346},[332,2975,2976],{"class":471},"readonly",[332,2978,2950],{"class":346},[332,2980,2981],{"class":2924},"     \u002F\u002F returned, never written\n",[332,2983,2984],{"class":334,"line":497},[332,2985,2986],{"class":346},"]),\n",[322,2988,2990],{"className":952,"code":2989,"language":955,"meta":328,"style":328},"{\"operation\": \"attach\", \"key\": 3, \"pivot\": {\"weight\": 5, \"added_by\": \"import\"}}\n",[317,2991,2992],{"__ignoreMap":328},[332,2993,2994,2997,2999,3001,3003,3005,3007,3009,3011,3013,3015,3017,3019,3021,3024,3026,3028,3030,3032,3034,3036,3038,3040,3042,3044,3046,3048,3050,3052,3054,3056,3058,3061,3063],{"class":334,"line":335},[332,2995,2996],{"class":346},"{",[332,2998,972],{"class":346},[332,3000,990],{"class":464},[332,3002,972],{"class":346},[332,3004,975],{"class":346},[332,3006,997],{"class":346},[332,3008,721],{"class":516},[332,3010,972],{"class":346},[332,3012,522],{"class":346},[332,3014,997],{"class":346},[332,3016,908],{"class":464},[332,3018,972],{"class":346},[332,3020,975],{"class":346},[332,3022,3023],{"class":338}," 3",[332,3025,522],{"class":346},[332,3027,997],{"class":346},[332,3029,1299],{"class":464},[332,3031,972],{"class":346},[332,3033,975],{"class":346},[332,3035,1046],{"class":346},[332,3037,972],{"class":346},[332,3039,658],{"class":500},[332,3041,972],{"class":346},[332,3043,975],{"class":346},[332,3045,1963],{"class":338},[332,3047,522],{"class":346},[332,3049,997],{"class":346},[332,3051,2911],{"class":500},[332,3053,972],{"class":346},[332,3055,975],{"class":346},[332,3057,997],{"class":346},[332,3059,3060],{"class":516},"import",[332,3062,972],{"class":346},[332,3064,1393],{"class":346},[894,3066,3067,3093,3102,3121,3146,3153,3165,3183,3197],{},[897,3068,3069,1826,3071,3073,3074,3077,3078,752,3080,1826,3082,3084,3085,3077,3088,3090,3091,949],{},[317,3070,711],{},[317,3072,721],{}," add a pivot row, so they accept the creatable pivot fields, with ",[317,3075,3076],{},"creationRules()",". ",[317,3079,716],{},[317,3081,731],{},[317,3083,736],{}," accept the updatable pivot fields, with ",[317,3086,3087],{},"updateRules()",[317,3089,726],{}," refuses ",[317,3092,1299],{},[897,3094,1784,3095,3097,3098,3101],{},[317,3096,1806],{}," pivot field is refused on every operation. A ",[317,3099,3100],{},"writeOnly()"," pivot field is accepted.",[897,3103,3104,3105,2582,3107,3110,3111,752,3113,1826,3115,3117,3118],{},"Another key gives a 422 under ",[317,3106,1299],{},[317,3108,3109],{},"The created_at key of the mutate.0.relations.tags.0.pivot field is not writable on create."," On ",[317,3112,716],{},[317,3114,731],{},[317,3116,736],{},", it ends with ",[317,3119,3120],{},"on update.",[897,3122,3123,3124,3127,3128,752,3130,3133,3134,3136,3137,3140,3141,2582,3143],{},"Each value is validated under its key, ",[317,3125,3126],{},"mutate.0.relations.tags.0.pivot.weight",": the base rule of its type, ",[317,3129,665],{},[317,3131,3132],{},"rules()",", and the rules of the operation. The rules run when ",[317,3135,1299],{}," is missing too, so a field with ",[317,3138,3139],{},"creationRules('required')"," is required on ",[317,3142,721],{},[317,3144,3145],{},"The mutate.0.relations.tags.0.pivot.weight field is required.",[897,3147,3148,3149,3152],{},"A rule that names another pivot field, such as ",[317,3150,3151],{},"required_with:note",", compares with that key in the pivot of the same entry.",[897,3154,3155,752,3157,1826,3159,3161,3162,3164],{},[317,3156,716],{},[317,3158,731],{},[317,3160,736],{}," validate with the updatable fields, also when they add a pivot row, because validation runs before the database is read. Use ",[317,3163,721],{}," to add a row with the creation rules.",[897,3166,3167,3168,3171,3172,1853,3175,3178,3179,3182],{},"A pivot field declared ",[317,3169,3170],{},"virtual()",", or with ",[317,3173,3174],{},"fillUsing()",[317,3176,3177],{},"resolveUsing()",", throws ",[317,3180,3181],{},"InvalidFieldException",", and so does a string or a name declared twice.",[897,3184,3185,3186,3189,3190,3193,3194,949],{},"An ",[317,3187,3188],{},"Enum"," pivot field reads its enum class from the casts of the pivot class, the class given to ",[317,3191,3192],{},"using()"," or Laravel's ",[317,3195,3196],{},"Pivot",[897,3198,3199,3200,3202,3203,3206,3207,949],{},"In a search, the ",[317,3201,1299],{}," of an included row holds the selectable pivot fields only, and filters on ",[317,3204,3205],{},"tags.pivot.weight"," accept the filterable ones, see ",[938,3208,3210],{"href":3209},"\u002Fsearch\u002Ffilters#pivot-fields","Filters",[687,3212,3214],{"id":3213},"link-checks","Link checks",[313,3216,3217],{},"Attaching or detaching a row checks the link on the policy of the parent's resource. A relation can name its own abilities:",[322,3219,3221],{"className":324,"code":3220,"language":327,"meta":328,"style":328},"BelongsToMany::make('tags', TagResource::class)\n    ->abilities(attach: 'attachTag', detach: 'detachTag'),\n",[317,3222,3223,3250],{"__ignoreMap":328},[332,3224,3225,3227,3229,3231,3233,3235,3237,3239,3241,3243,3245,3247],{"class":334,"line":335},[332,3226,427],{"class":500},[332,3228,504],{"class":346},[332,3230,507],{"class":471},[332,3232,510],{"class":346},[332,3234,513],{"class":346},[332,3236,2840],{"class":516},[332,3238,513],{"class":346},[332,3240,522],{"class":346},[332,3242,2847],{"class":500},[332,3244,504],{"class":346},[332,3246,530],{"class":338},[332,3248,3249],{"class":346},")\n",[332,3251,3252,3255,3258,3260,3262,3264,3267,3270,3272,3274,3277,3279,3281,3284,3286],{"class":334,"line":365},[332,3253,3254],{"class":346},"    ->",[332,3256,3257],{"class":471},"abilities",[332,3259,510],{"class":346},[332,3261,721],{"class":500},[332,3263,975],{"class":346},[332,3265,3266],{"class":346}," '",[332,3268,3269],{"class":516},"attachTag",[332,3271,513],{"class":346},[332,3273,522],{"class":346},[332,3275,3276],{"class":500}," detach",[332,3278,975],{"class":346},[332,3280,3266],{"class":346},[332,3282,3283],{"class":516},"detachTag",[332,3285,513],{"class":346},[332,3287,533],{"class":346},[322,3289,3292],{"className":324,"code":3290,"filename":3291,"language":327,"meta":328,"style":328},"public function attachTag(User $user, Book $book, Tag $tag): bool\n{\n    return $user->can('update', $book) && ! $tag->archived;\n}\n","app\u002FPolicies\u002FBookPolicy.php",[317,3293,3294,3340,3344,3392],{"__ignoreMap":328},[332,3295,3296,3298,3300,3303,3305,3308,3311,3314,3316,3319,3321,3324,3326,3329,3331,3334,3337],{"class":334,"line":335},[332,3297,465],{"class":464},[332,3299,468],{"class":464},[332,3301,3302],{"class":471}," attachTag",[332,3304,510],{"class":346},[332,3306,3307],{"class":500},"User",[332,3309,3310],{"class":346}," $",[332,3312,3313],{"class":342},"user",[332,3315,522],{"class":346},[332,3317,3318],{"class":500}," Book",[332,3320,3310],{"class":346},[332,3322,3323],{"class":342},"book",[332,3325,522],{"class":346},[332,3327,3328],{"class":500}," Tag",[332,3330,3310],{"class":346},[332,3332,3333],{"class":342},"tag",[332,3335,3336],{"class":346},"):",[332,3338,3339],{"class":338}," bool\n",[332,3341,3342],{"class":334,"line":365},[332,3343,484],{"class":346},[332,3345,3346,3348,3350,3352,3355,3358,3360,3362,3364,3366,3368,3370,3372,3375,3378,3381,3383,3385,3387,3390],{"class":334,"line":387},[332,3347,491],{"class":490},[332,3349,3310],{"class":346},[332,3351,3313],{"class":342},[332,3353,3354],{"class":346},"->",[332,3356,3357],{"class":471},"can",[332,3359,510],{"class":346},[332,3361,513],{"class":346},[332,3363,716],{"class":516},[332,3365,513],{"class":346},[332,3367,522],{"class":346},[332,3369,3310],{"class":346},[332,3371,3323],{"class":342},[332,3373,3374],{"class":346},")",[332,3376,3377],{"class":346}," &&",[332,3379,3380],{"class":346}," !",[332,3382,3310],{"class":346},[332,3384,3333],{"class":342},[332,3386,3354],{"class":346},[332,3388,3389],{"class":342},"archived",[332,3391,362],{"class":346},[332,3393,3394],{"class":334,"line":410},[332,3395,685],{"class":346},[894,3397,3398,3408,3411],{},[897,3399,3400,3401,3404,3405,3407],{},"Without ",[317,3402,3403],{},"abilities()",", a link checks ",[317,3406,716],{}," on the parent.",[897,3409,3410],{},"A declared ability without a policy method is denied.",[897,3412,3413,3414,3416,3417,949],{},"A refused link answers ",[317,3415,2622],{}," before any write. See ",[938,3418,154],{"href":155},[3420,3421,3422],"style",{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .su27w, html code.shiki .su27w{--shiki-light:#916B53;--shiki-default:#916B53;--shiki-dark:#916B53}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}",{"title":328,"searchDepth":335,"depth":365,"links":3424},[3425,3426,3427,3428,3429,3432],{"id":689,"depth":365,"text":690},{"id":1752,"depth":365,"text":1753},{"id":1809,"depth":365,"text":1810},{"id":2062,"depth":365,"text":2063},{"id":2674,"depth":365,"text":2675,"children":3430},[3431],{"id":2751,"depth":387,"text":2752},{"id":3213,"depth":365,"text":3214},"Create, update, attach, detach, sync, toggle and delete related rows in a mutate entry, and write pivot fields with their rules.","md",null,{},{"title":110,"description":3433},{"loc":111},"H4Sm6F7o5wfcwK0pykYbpSd9im5mNUpoOJrASA3Bt88",[3441,3443],{"title":106,"path":107,"stem":108,"description":3442,"children":-1},"Create and update rows with their relations in one request and one transaction, read the written rows back, and retry on deadlocks.",{"title":114,"path":115,"stem":116,"description":3444,"children":-1},"Refuse an update of a row that another request changed since the client read it, with a 409 that lists every conflict.",1794181354834]