[{"data":1,"prerenderedAt":425},["ShallowReactive",2],{"navigation":3,"\u002Fintegrations\u002Ftinker-and-ide-helper":193,"\u002Fintegrations\u002Ftinker-and-ide-helper-surround":420},[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":180,"body":195,"description":413,"extension":414,"links":415,"meta":416,"navigation":267,"path":181,"seo":417,"sitemap":418,"stem":182,"__hash__":419},"docs\u002F6.integrations\u002F2.tinker-and-ide-helper.md",{"type":196,"value":197,"toc":409},"minimark",[198,203,220,306,317,324,338,342,362,375,399,405],[199,200,202],"h2",{"id":201},"tinker","Tinker",[204,205,206,207,211,212,215,216,219],"p",{},"Inside ",[208,209,210],"code",{},"php artisan tinker",", OSDD resolves layer classes by their short name. Type ",[208,213,214],{},"Order"," instead of ",[208,217,218],{},"Functional\\Orders\\Models\\Order",":",[221,222,227],"pre",{"className":223,"code":224,"language":225,"meta":226,"style":226},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","> Order::count()\n= 50\n\n> Functional\\Orders\\Models\\Order::count()\n= 50\n","php","",[208,228,229,252,262,269,299],{"__ignoreMap":226},[230,231,234,238,242,245,249],"span",{"class":232,"line":233},"line",1,[230,235,237],{"class":236},"sMK4o",">",[230,239,241],{"class":240},"sBMFI"," Order",[230,243,244],{"class":236},"::",[230,246,248],{"class":247},"s2Zo4","count",[230,250,251],{"class":236},"()\n",[230,253,255,258],{"class":232,"line":254},2,[230,256,257],{"class":236},"=",[230,259,261],{"class":260},"sbssI"," 50\n",[230,263,265],{"class":232,"line":264},3,[230,266,268],{"emptyLinePlaceholder":267},true,"\n",[230,270,272,274,278,281,284,286,289,291,293,295,297],{"class":232,"line":271},4,[230,273,237],{"class":236},[230,275,277],{"class":276},"sTEyZ"," Functional",[230,279,280],{"class":236},"\\",[230,282,283],{"class":276},"Orders",[230,285,280],{"class":236},[230,287,288],{"class":276},"Models",[230,290,280],{"class":236},[230,292,214],{"class":240},[230,294,244],{"class":236},[230,296,248],{"class":247},[230,298,251],{"class":236},[230,300,302,304],{"class":232,"line":301},5,[230,303,257],{"class":236},[230,305,261],{"class":260},[204,307,308,309,312,313,316],{},"When Tinker starts, OSDD scans the source directory of every layer (",[208,310,311],{},"src\u002F","), adds the layers' root namespaces to ",[208,314,315],{},"tinker.alias",", and registers an autoloader that maps each short class name to its full name.",[204,318,319,320,323],{},"The aliases only exist inside Tinker. Application code keeps its ",[208,321,322],{},"use"," statements.",[325,326,327],"note",{},[204,328,329,330,333,334,337],{},"When two layers define a class with the same short name, such as ",[208,331,332],{},"Functional\\Users\\Models\\User"," and ",[208,335,336],{},"Functional\\Admin\\Models\\User",", the layer that comes first by name wins. Use the full name to pick the other one.",[199,339,341],{"id":340},"ide-helper","IDE Helper",[204,343,344,353,354,357,358,361],{},[345,346,350],"a",{"href":347,"rel":348},"https:\u002F\u002Fgithub.com\u002Fbarryvdh\u002Flaravel-ide-helper",[349],"nofollow",[208,351,352],{},"barryvdh\u002Flaravel-ide-helper"," generates PHPDoc for your models. It looks for them in ",[208,355,356],{},"ide-helper.model_locations",", which defaults to ",[208,359,360],{},"app\u002F",".",[204,363,364,365,368,369,371,372,374],{},"When ",[208,366,367],{},"php artisan ide-helper:models"," runs, OSDD adds the source directory of every layer (",[208,370,311],{},") to ",[208,373,356],{},". The locations you configured stay, and duplicates are removed.",[221,376,380],{"className":377,"code":378,"language":379,"meta":226,"style":226},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","php artisan ide-helper:models\n# scans the configured locations, then functional\u002Fusers\u002Fsrc, functional\u002Forders\u002Fsrc, ...\n","bash",[208,381,382,393],{"__ignoreMap":226},[230,383,384,386,390],{"class":232,"line":233},[230,385,225],{"class":240},[230,387,389],{"class":388},"sfazB"," artisan",[230,391,392],{"class":388}," ide-helper:models\n",[230,394,395],{"class":232,"line":254},[230,396,398],{"class":397},"sHwdD","# scans the configured locations, then functional\u002Fusers\u002Fsrc, functional\u002Forders\u002Fsrc, ...\n",[204,400,401,402,404],{},"There is nothing to configure. OSDD only touches ",[208,403,356],{}," when the key exists, that is when IDE Helper is installed.",[406,407,408],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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":226,"searchDepth":233,"depth":254,"links":410},[411,412],{"id":201,"depth":254,"text":202},{"id":340,"depth":254,"text":341},"Use short class names in Tinker, and let IDE Helper find the models of every layer. Nothing to configure.","md",null,{},{"title":180,"description":413},{"loc":181},"BUpUTCw__LURh0LPCQ5B2m-A9_IykNx7f1h-fm4RN98",[421,423],{"title":176,"path":177,"stem":178,"description":422,"children":-1},"The skill that teaches your coding agent to write inside layers.",{"title":190,"path":191,"stem":192,"description":424,"children":-1},"Move a Laravel OSDD 2.x project to 3.0, step by step.",1794437213067]