[{"data":1,"prerenderedAt":907},["ShallowReactive",2],{"navigation":3,"\u002Fcommands\u002Foverview":193,"\u002Fcommands\u002Foverview-surround":902},[4,27,49,99,149,169,183],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting Started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"Existing Application","\u002Fgetting-started\u002Fexisting-application","1.getting-started\u002F4.existing-application",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Concepts","i-lucide-layers","\u002Fconcepts","2.concepts",[33,37,41,45],{"title":34,"path":35,"stem":36},"Layers","\u002Fconcepts\u002Flayers","2.concepts\u002F1.layers",{"title":38,"path":39,"stem":40},"Buckets","\u002Fconcepts\u002Fbuckets","2.concepts\u002F2.buckets",{"title":42,"path":43,"stem":44},"Boundaries","\u002Fconcepts\u002Fboundaries","2.concepts\u002F3.boundaries",{"title":46,"path":47,"stem":48},"Service Providers","\u002Fconcepts\u002Fservice-providers","2.concepts\u002F4.service-providers",{"title":50,"icon":51,"path":52,"stem":53,"children":54,"page":26},"Guides","i-lucide-book-marked","\u002Fguides","3.guides",[55,59,63,67,71,75,79,83,87,91,95],{"title":56,"path":57,"stem":58},"Add a Domain","\u002Fguides\u002Fadd-a-domain","3.guides\u002F01.add-a-domain",{"title":60,"path":61,"stem":62},"Share Code Between Layers","\u002Fguides\u002Fshare-code-between-layers","3.guides\u002F02.share-code-between-layers",{"title":64,"path":65,"stem":66},"Routes","\u002Fguides\u002Froutes","3.guides\u002F03.routes",{"title":68,"path":69,"stem":70},"Views and Components","\u002Fguides\u002Fviews-and-components","3.guides\u002F04.views-and-components",{"title":72,"path":73,"stem":74},"Seeders","\u002Fguides\u002Fseeders","3.guides\u002F05.seeders",{"title":76,"path":77,"stem":78},"Configuration","\u002Fguides\u002Fconfiguration","3.guides\u002F06.configuration",{"title":80,"path":81,"stem":82},"Events","\u002Fguides\u002Fevents","3.guides\u002F07.events",{"title":84,"path":85,"stem":86},"Tests and CI","\u002Fguides\u002Ftesting-and-ci","3.guides\u002F08.testing-and-ci",{"title":88,"path":89,"stem":90},"Production","\u002Fguides\u002Fproduction","3.guides\u002F09.production",{"title":92,"path":93,"stem":94},"Remove a Layer","\u002Fguides\u002Fremoving-a-layer","3.guides\u002F10.removing-a-layer",{"title":96,"path":97,"stem":98},"Multi-tenancy","\u002Fguides\u002Fmulti-tenancy","3.guides\u002F11.multi-tenancy",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":26},"Commands","i-lucide-terminal","\u002Fcommands","4.commands",[105,109,113,117,121,125,129,133,137,141,145],{"title":106,"path":107,"stem":108},"Overview","\u002Fcommands\u002Foverview","4.commands\u002F01.overview",{"title":110,"path":111,"stem":112},"osdd:start","\u002Fcommands\u002Fosdd-start","4.commands\u002F02.osdd-start",{"title":114,"path":115,"stem":116},"osdd:layer","\u002Fcommands\u002Fosdd-layer","4.commands\u002F03.osdd-layer",{"title":118,"path":119,"stem":120},"osdd:list","\u002Fcommands\u002Fosdd-list","4.commands\u002F04.osdd-list",{"title":122,"path":123,"stem":124},"osdd:check","\u002Fcommands\u002Fosdd-check","4.commands\u002F05.osdd-check",{"title":126,"path":127,"stem":128},"osdd:graph","\u002Fcommands\u002Fosdd-graph","4.commands\u002F06.osdd-graph",{"title":130,"path":131,"stem":132},"osdd:seed","\u002Fcommands\u002Fosdd-seed","4.commands\u002F07.osdd-seed",{"title":134,"path":135,"stem":136},"osdd:phpunit","\u002Fcommands\u002Fosdd-phpunit","4.commands\u002F08.osdd-phpunit",{"title":138,"path":139,"stem":140},"osdd:remove","\u002Fcommands\u002Fosdd-remove","4.commands\u002F09.osdd-remove",{"title":142,"path":143,"stem":144},"osdd:cache","\u002Fcommands\u002Fosdd-cache","4.commands\u002F10.osdd-cache",{"title":146,"path":147,"stem":148},"Generators","\u002Fcommands\u002Fmake-commands","4.commands\u002F11.make-commands",{"title":150,"icon":151,"path":152,"stem":153,"children":154,"page":26},"API Reference","i-lucide-book-open","\u002Fapi-reference","5.api-reference",[155,159,162,166],{"title":156,"path":157,"stem":158},"LayerServiceProvider","\u002Fapi-reference\u002Flayer-service-provider","5.api-reference\u002F1.layer-service-provider",{"title":34,"path":160,"stem":161},"\u002Fapi-reference\u002Flayers","5.api-reference\u002F2.layers",{"title":163,"path":164,"stem":165},"SeederRegistry","\u002Fapi-reference\u002Fseeder-registry","5.api-reference\u002F3.seeder-registry",{"title":76,"path":167,"stem":168},"\u002Fapi-reference\u002Fconfiguration","5.api-reference\u002F4.configuration",{"title":170,"icon":171,"path":172,"stem":173,"children":174,"page":26},"Integrations","i-lucide-puzzle","\u002Fintegrations","6.integrations",[175,179],{"title":176,"path":177,"stem":178},"Laravel Boost","\u002Fintegrations\u002Flaravel-boost","6.integrations\u002F1.laravel-boost",{"title":180,"path":181,"stem":182},"Tinker and IDE Helper","\u002Fintegrations\u002Ftinker-and-ide-helper","6.integrations\u002F2.tinker-and-ide-helper",{"title":184,"icon":185,"path":186,"stem":187,"children":188,"page":26},"Upgrade","i-lucide-arrow-up-circle","\u002Fupgrade","7.upgrade",[189],{"title":190,"path":191,"stem":192},"Upgrade from 2.x","\u002Fupgrade\u002Ffrom-2x","7.upgrade\u002F1.from-2x",{"id":194,"title":106,"body":195,"description":894,"extension":895,"links":896,"meta":897,"navigation":898,"path":107,"seo":899,"sitemap":900,"stem":108,"__hash__":901},"docs\u002F4.commands\u002F01.overview.md",{"type":196,"value":197,"toc":889},"minimark",[198,203,335,342,352,375,378,389,418,875,885],[199,200,202],"h2",{"id":201},"project-commands","Project commands",[204,205,206,219],"table",{},[207,208,209],"thead",{},[210,211,212,216],"tr",{},[213,214,215],"th",{},"Command",[213,217,218],{},"Description",[220,221,222,236,250,261,272,283,294,309,320],"tbody",{},[210,223,224,233],{},[225,226,227],"td",{},[228,229,230],"a",{"href":111},[231,232,110],"code",{},[225,234,235],{},"Convert a fresh Laravel project to layers",[210,237,238,244],{},[225,239,240],{},[228,241,242],{"href":115},[231,243,114],{},[225,245,246,247],{},"Create a layer and register it in the root ",[231,248,249],{},"composer.json",[210,251,252,258],{},[225,253,254],{},[228,255,256],{"href":119},[231,257,118],{},[225,259,260],{},"List the layers with their providers, requirements, file counts and health",[210,262,263,269],{},[225,264,265],{},[228,266,267],{"href":123},[231,268,122],{},[225,270,271],{},"Check that each layer only uses the layers it requires, and that no requirements form a cycle",[210,273,274,280],{},[225,275,276],{},[228,277,278],{"href":127},[231,279,126],{},[225,281,282],{},"Print the layer graph in Mermaid, DOT or JSON",[210,284,285,291],{},[225,286,287],{},[228,288,289],{"href":131},[231,290,130],{},[225,292,293],{},"Run the seeders registered by every layer, or by some layers",[210,295,296,302],{},[225,297,298],{},[228,299,300],{"href":135},[231,301,134],{},[225,303,304,305,308],{},"Sync ",[231,306,307],{},"phpunit.xml"," with the test suite and source directory of each layer",[210,310,311,317],{},[225,312,313],{},[228,314,315],{"href":139},[231,316,138],{},[225,318,319],{},"Remove a layer that no other layer requires",[210,321,322,332],{},[225,323,324],{},[228,325,326,328,329],{"href":143},[231,327,142],{},", ",[231,330,331],{},"osdd:clear",[225,333,334],{},"Cache the discovered layers, or remove that cache",[336,337,338,341],"p",{},[231,339,340],{},"php artisan about --only=osdd"," shows the discovered layers, the migration paths and the number of registered seeders:",[343,344,349],"pre",{"className":345,"code":347,"language":348},[346],"language-text","  OSDD .............................................................\n  Layers ........................................................ 2\n  Migration paths .... functional\u002Fusers\u002Fdatabase\u002Fmigrations, technical\u002Fosdd\u002Fdatabase\u002Fmigrations\n  Seeders ....................................................... 1\n  functional\u002Fusers ..................................... functional\u002Fusers\n  technical\u002Fosdd ......................................... technical\u002Fosdd\n","text",[231,350,347],{"__ignoreMap":351},"",[336,353,354,355,358,359,362,363,366,367,370,371,374],{},"Laravel sorts the rows. ",[231,356,357],{},"php artisan about --only=osdd --json"," puts them under the ",[231,360,361],{},"o_s_d_d"," key: ",[231,364,365],{},"layers",", one key per layer, ",[231,368,369],{},"migration_paths"," and ",[231,372,373],{},"seeders",".",[199,376,146],{"id":377},"generators",[336,379,380,381,384,385,388],{},"Every ",[231,382,383],{},"make:*"," generator of Laravel has an ",[231,386,387],{},"osdd:*"," twin that writes the file inside a layer:",[343,390,394],{"className":391,"code":392,"language":393,"meta":351,"style":351},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","php artisan osdd:model Order --layer=functional\u002Forders\n","bash",[231,395,396],{"__ignoreMap":351},[397,398,401,405,409,412,415],"span",{"class":399,"line":400},"line",1,[397,402,404],{"class":403},"sBMFI","php",[397,406,408],{"class":407},"sfazB"," artisan",[397,410,411],{"class":407}," osdd:model",[397,413,414],{"class":407}," Order",[397,416,417],{"class":407}," --layer=functional\u002Forders\n",[204,419,420,429],{},[207,421,422],{},[210,423,424,426],{},[213,425,215],{},[213,427,428],{},"Laravel twin",[220,430,431,443,455,467,479,491,503,515,527,539,551,563,575,587,599,611,623,635,647,659,671,683,695,707,719,731,743,755,767,779,791,803,815,827,839,851,863],{},[210,432,433,438],{},[225,434,435],{},[231,436,437],{},"osdd:cache-table",[225,439,440],{},[231,441,442],{},"make:cache-table",[210,444,445,450],{},[225,446,447],{},[231,448,449],{},"osdd:cast",[225,451,452],{},[231,453,454],{},"make:cast",[210,456,457,462],{},[225,458,459],{},[231,460,461],{},"osdd:channel",[225,463,464],{},[231,465,466],{},"make:channel",[210,468,469,474],{},[225,470,471],{},[231,472,473],{},"osdd:class",[225,475,476],{},[231,477,478],{},"make:class",[210,480,481,486],{},[225,482,483],{},[231,484,485],{},"osdd:command",[225,487,488],{},[231,489,490],{},"make:command",[210,492,493,498],{},[225,494,495],{},[231,496,497],{},"osdd:component",[225,499,500],{},[231,501,502],{},"make:component",[210,504,505,510],{},[225,506,507],{},[231,508,509],{},"osdd:config",[225,511,512],{},[231,513,514],{},"make:config",[210,516,517,522],{},[225,518,519],{},[231,520,521],{},"osdd:controller",[225,523,524],{},[231,525,526],{},"make:controller",[210,528,529,534],{},[225,530,531],{},[231,532,533],{},"osdd:enum",[225,535,536],{},[231,537,538],{},"make:enum",[210,540,541,546],{},[225,542,543],{},[231,544,545],{},"osdd:event",[225,547,548],{},[231,549,550],{},"make:event",[210,552,553,558],{},[225,554,555],{},[231,556,557],{},"osdd:exception",[225,559,560],{},[231,561,562],{},"make:exception",[210,564,565,570],{},[225,566,567],{},[231,568,569],{},"osdd:factory",[225,571,572],{},[231,573,574],{},"make:factory",[210,576,577,582],{},[225,578,579],{},[231,580,581],{},"osdd:interface",[225,583,584],{},[231,585,586],{},"make:interface",[210,588,589,594],{},[225,590,591],{},[231,592,593],{},"osdd:job",[225,595,596],{},[231,597,598],{},"make:job",[210,600,601,606],{},[225,602,603],{},[231,604,605],{},"osdd:job-middleware",[225,607,608],{},[231,609,610],{},"make:job-middleware",[210,612,613,618],{},[225,614,615],{},[231,616,617],{},"osdd:listener",[225,619,620],{},[231,621,622],{},"make:listener",[210,624,625,630],{},[225,626,627],{},[231,628,629],{},"osdd:mail",[225,631,632],{},[231,633,634],{},"make:mail",[210,636,637,642],{},[225,638,639],{},[231,640,641],{},"osdd:middleware",[225,643,644],{},[231,645,646],{},"make:middleware",[210,648,649,654],{},[225,650,651],{},[231,652,653],{},"osdd:migration",[225,655,656],{},[231,657,658],{},"make:migration",[210,660,661,666],{},[225,662,663],{},[231,664,665],{},"osdd:model",[225,667,668],{},[231,669,670],{},"make:model",[210,672,673,678],{},[225,674,675],{},[231,676,677],{},"osdd:notification",[225,679,680],{},[231,681,682],{},"make:notification",[210,684,685,690],{},[225,686,687],{},[231,688,689],{},"osdd:notifications-table",[225,691,692],{},[231,693,694],{},"make:notifications-table",[210,696,697,702],{},[225,698,699],{},[231,700,701],{},"osdd:observer",[225,703,704],{},[231,705,706],{},"make:observer",[210,708,709,714],{},[225,710,711],{},[231,712,713],{},"osdd:policy",[225,715,716],{},[231,717,718],{},"make:policy",[210,720,721,726],{},[225,722,723],{},[231,724,725],{},"osdd:provider",[225,727,728],{},[231,729,730],{},"make:provider",[210,732,733,738],{},[225,734,735],{},[231,736,737],{},"osdd:queue-batches-table",[225,739,740],{},[231,741,742],{},"make:queue-batches-table",[210,744,745,750],{},[225,746,747],{},[231,748,749],{},"osdd:queue-failed-table",[225,751,752],{},[231,753,754],{},"make:queue-failed-table",[210,756,757,762],{},[225,758,759],{},[231,760,761],{},"osdd:queue-table",[225,763,764],{},[231,765,766],{},"make:queue-table",[210,768,769,774],{},[225,770,771],{},[231,772,773],{},"osdd:request",[225,775,776],{},[231,777,778],{},"make:request",[210,780,781,786],{},[225,782,783],{},[231,784,785],{},"osdd:resource",[225,787,788],{},[231,789,790],{},"make:resource",[210,792,793,798],{},[225,794,795],{},[231,796,797],{},"osdd:rule",[225,799,800],{},[231,801,802],{},"make:rule",[210,804,805,810],{},[225,806,807],{},[231,808,809],{},"osdd:scope",[225,811,812],{},[231,813,814],{},"make:scope",[210,816,817,822],{},[225,818,819],{},[231,820,821],{},"osdd:seeder",[225,823,824],{},[231,825,826],{},"make:seeder",[210,828,829,834],{},[225,830,831],{},[231,832,833],{},"osdd:session-table",[225,835,836],{},[231,837,838],{},"make:session-table",[210,840,841,846],{},[225,842,843],{},[231,844,845],{},"osdd:test",[225,847,848],{},[231,849,850],{},"make:test",[210,852,853,858],{},[225,854,855],{},[231,856,857],{},"osdd:trait",[225,859,860],{},[231,861,862],{},"make:trait",[210,864,865,870],{},[225,866,867],{},[231,868,869],{},"osdd:view",[225,871,872],{},[231,873,874],{},"make:view",[336,876,877,878,880,881,884],{},"See ",[228,879,146],{"href":147}," for the ",[231,882,883],{},"--layer"," option and the files each one writes.",[886,887,888],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":351,"searchDepth":400,"depth":890,"links":891},2,[892,893],{"id":201,"depth":890,"text":202},{"id":377,"depth":890,"text":146},"Every Artisan command Laravel OSDD registers.","md",null,{},true,{"title":106,"description":894},{"loc":107},"WMSlnN9cv2l3OIEm2NN_QdkgFa4S4MnXriVEzQNNbpc",[903,905],{"title":96,"path":97,"stem":98,"description":904,"children":-1},"Keep the tenant migrations and seeders of each layer apart, and hand them to stancl\u002Ftenancy or spatie\u002Flaravel-multitenancy.",{"title":110,"path":111,"stem":112,"description":906,"children":-1},"Convert a fresh Laravel project to layers.",1794438589550]