# 논리적 데이터베이스 관계 문서 > **자동 생성**: 2025-12-26 15:08:36 > **소스**: Eloquent 모델 관계 분석 ## 📊 모델별 관계 현황 ### bad_debts **모델**: `App\Models\BadDebts\BadDebt` - **client()**: belongsTo → `clients` - **assignedUser()**: belongsTo → `users` - **creator()**: belongsTo → `users` - **documents()**: hasMany → `bad_debt_documents` - **memos()**: hasMany → `bad_debt_memos` ### bad_debt_documents **모델**: `App\Models\BadDebts\BadDebtDocument` - **badDebt()**: belongsTo → `bad_debts` - **file()**: belongsTo → `files` ### bad_debt_memos **모델**: `App\Models\BadDebts\BadDebtMemo` - **badDebt()**: belongsTo → `bad_debts` - **creator()**: belongsTo → `users` ### boards **모델**: `App\Models\Boards\Board` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` - **customFields()**: hasMany → `board_settings` - **posts()**: hasMany → `posts` ### board_comments **모델**: `App\Models\Boards\BoardComment` - **post()**: belongsTo → `posts` - **user()**: belongsTo → `users` - **parent()**: belongsTo → `board_comments` - **children()**: hasMany → `board_comments` ### board_settings **모델**: `App\Models\Boards\BoardSetting` - **board()**: belongsTo → `boards` ### posts **모델**: `App\Models\Boards\Post` - **board()**: belongsTo → `boards` - **comments()**: hasMany → `board_comments` - **files()**: morphMany → `files` ### post_custom_field_values **모델**: `App\Models\Boards\PostCustomFieldValue` - **post()**: belongsTo → `posts` - **field()**: belongsTo → `board_settings` ### categorys **모델**: `App\Models\Commons\Category` - **parent()**: belongsTo → `categories` - **children()**: hasMany → `categories` - **categoryFields()**: hasMany → `category_fields` ### category_fields **모델**: `App\Models\Commons\CategoryField` - **category()**: belongsTo → `categories` ### category_logs **모델**: `App\Models\Commons\CategoryLog` - **category()**: belongsTo → `categories` ### category_templates **모델**: `App\Models\Commons\CategoryTemplate` - **category()**: belongsTo → `categories` ### files **모델**: `App\Models\Commons\File` - **tenant()**: belongsTo → `tenants` - **folder()**: belongsTo → `folders` - **uploader()**: belongsTo → `users` - **shareLinks()**: hasMany → `file_share_links` - **fileable()**: morphTo → `(Polymorphic)` ### global_menus **모델**: `App\Models\Commons\GlobalMenu` - **parent()**: belongsTo → `global_menus` - **children()**: hasMany → `global_menus` - **tenantMenus()**: hasMany → `menus` ### menus **모델**: `App\Models\Commons\Menu` - **parent()**: belongsTo → `menus` - **globalMenu()**: belongsTo → `global_menus` - **children()**: hasMany → `menus` ### tags **모델**: `App\Models\Commons\Tag` - **tenant()**: belongsTo → `tenants` ### company_requests **모델**: `App\Models\CompanyRequest` - **user()**: belongsTo → `users` - **approver()**: belongsTo → `users` - **createdTenant()**: belongsTo → `tenants` ### bom_templates **모델**: `App\Models\Design\BomTemplate` - **modelVersion()**: belongsTo → `model_versions` - **items()**: hasMany → `bom_template_items` ### bom_template_items **모델**: `App\Models\Design\BomTemplateItem` - **template()**: belongsTo → `bom_templates` ### design_models **모델**: `App\Models\Design\DesignModel` - **versions()**: hasMany → `model_versions` ### model_versions **모델**: `App\Models\Design\ModelVersion` - **model()**: belongsTo → `models` - **bomTemplates()**: hasMany → `bom_templates` ### estimates **모델**: `App\Models\Estimate\Estimate` - **modelSet()**: belongsTo → `categories` - **items()**: hasMany → `estimate_items` ### estimate_items **모델**: `App\Models\Estimate\EstimateItem` - **estimate()**: belongsTo → `estimates` ### fcm_send_logs **모델**: `App\Models\FcmSendLog` ### file_share_links **모델**: `App\Models\FileShareLink` - **file()**: belongsTo → `files` - **tenant()**: belongsTo → `tenants` ### folders **모델**: `App\Models\Folder` ### custom_tabs **모델**: `App\Models\ItemMaster\CustomTab` - **columnSetting()**: hasOne → `tab_columns` ### entity_relationships **모델**: `App\Models\ItemMaster\EntityRelationship` - **parent()**: morphTo → `(Polymorphic)` - **child()**: morphTo → `(Polymorphic)` ### item_pages **모델**: `App\Models\ItemMaster\ItemPage` - **sectionRelationships()**: hasMany → `entity_relationships` - **fieldRelationships()**: hasMany → `entity_relationships` - **allRelationships()**: hasMany → `entity_relationships` ### item_sections **모델**: `App\Models\ItemMaster\ItemSection` - **fieldRelationships()**: hasMany → `entity_relationships` - **bomRelationships()**: hasMany → `entity_relationships` - **allChildRelationships()**: hasMany → `entity_relationships` ### tab_columns **모델**: `App\Models\ItemMaster\TabColumn` - **tab()**: belongsTo → `custom_tabs` ### items **모델**: `App\Models\Items\Item` - **category()**: belongsTo → `categories` - **files()**: hasMany → `files` - **details()**: hasOne → `item_details` ### item_details **모델**: `App\Models\Items\ItemDetail` - **item()**: belongsTo → `items` ### login_tokens **모델**: `App\Models\LoginToken` - **user()**: belongsTo → `users` ### main_requests **모델**: `App\Models\MainRequest` - **flows()**: hasMany → `main_request_flows` ### main_request_flows **모델**: `App\Models\MainRequestFlow` - **mainRequest()**: belongsTo → `main_requests` - **flowable()**: morphTo → `(Polymorphic)` ### material_inspections **모델**: `App\Models\Materials\MaterialInspection` - **receipt()**: belongsTo → `material_receipts` - **items()**: hasMany → `material_inspection_items` ### material_inspection_items **모델**: `App\Models\Materials\MaterialInspectionItem` - **inspection()**: belongsTo → `material_inspections` ### material_receipts **모델**: `App\Models\Materials\MaterialReceipt` - **item()**: belongsTo → `items` - **inspections()**: hasMany → `material_inspections` ### users **모델**: `App\Models\Members\User` - **userTenants()**: hasMany → `user_tenants` - **userRoles()**: hasMany → `user_roles` - **tenantProfiles()**: hasMany → `tenant_user_profiles` - **userTenant()**: hasOne → `user_tenants` - **userTenantById()**: hasOne → `user_tenants` - **tenantProfile()**: hasOne → `tenant_user_profiles` - **tenantsMembership()**: belongsToMany → `tenants` - **files()**: morphMany → `files` ### user_menu_permissions **모델**: `App\Models\Members\UserMenuPermission` - **user()**: belongsTo → `users` - **menu()**: belongsTo → `menus` ### user_roles **모델**: `App\Models\Members\UserRole` - **user()**: belongsTo → `users` - **tenant()**: belongsTo → `tenants` - **role()**: belongsTo → `roles` ### user_tenants **모델**: `App\Models\Members\UserTenant` - **user()**: belongsTo → `users` - **tenant()**: belongsTo → `tenants` ### notification_settings **모델**: `App\Models\NotificationSetting` ### notification_setting_groups **모델**: `App\Models\NotificationSettingGroup` - **items()**: hasMany → `notification_setting_group_items` ### notification_setting_group_items **모델**: `App\Models\NotificationSettingGroupItem` - **group()**: belongsTo → `notification_setting_groups` ### notification_setting_group_states **모델**: `App\Models\NotificationSettingGroupState` ### clients **모델**: `App\Models\Orders\Client` - **clientGroup()**: belongsTo → `client_groups` - **orders()**: hasMany → `orders` - **badDebts()**: hasMany → `bad_debts` - **activeBadDebts()**: hasMany → `bad_debts` ### client_groups **모델**: `App\Models\Orders\ClientGroup` - **clients()**: hasMany → `clients` ### orders **모델**: `App\Models\Orders\Order` - **item()**: belongsTo → `items` - **items()**: hasMany → `order_items` - **histories()**: hasMany → `order_histories` - **versions()**: hasMany → `order_versions` ### order_historys **모델**: `App\Models\Orders\OrderHistory` - **order()**: belongsTo → `orders` ### order_items **모델**: `App\Models\Orders\OrderItem` - **order()**: belongsTo → `orders` - **item()**: belongsTo → `items` - **components()**: hasMany → `order_item_components` ### order_item_components **모델**: `App\Models\Orders\OrderItemComponent` - **orderItem()**: belongsTo → `order_items` ### order_versions **모델**: `App\Models\Orders\OrderVersion` - **order()**: belongsTo → `orders` ### permissions **모델**: `App\Models\Permissions\Permission` - **tenant()**: belongsTo → `tenants` ### permission_overrides **모델**: `App\Models\Permissions\PermissionOverride` - **permission()**: belongsTo → `permissions` ### roles **모델**: `App\Models\Permissions\Role` - **tenant()**: belongsTo → `tenants` - **menuPermissions()**: hasMany → `role_menu_permissions` - **userRoles()**: hasMany → `user_roles` ### role_menu_permissions **모델**: `App\Models\Permissions\RoleMenuPermission` - **role()**: belongsTo → `roles` - **menu()**: belongsTo → `menus` ### popups **모델**: `App\Models\Popups\Popup` - **department()**: belongsTo → `departments` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` ### work_orders **모델**: `App\Models\Production\WorkOrder` - **salesOrder()**: belongsTo → `orders` - **assignee()**: belongsTo → `users` - **team()**: belongsTo → `departments` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` - **items()**: hasMany → `work_order_items` - **issues()**: hasMany → `work_order_issues` - **bendingDetail()**: hasOne → `work_order_bending_details` ### work_order_bending_details **모델**: `App\Models\Production\WorkOrderBendingDetail` - **workOrder()**: belongsTo → `work_orders` ### work_order_issues **모델**: `App\Models\Production\WorkOrderIssue` - **workOrder()**: belongsTo → `work_orders` - **reporter()**: belongsTo → `users` - **resolver()**: belongsTo → `users` ### work_order_items **모델**: `App\Models\Production\WorkOrderItem` - **workOrder()**: belongsTo → `work_orders` - **item()**: belongsTo → `items` ### work_results **모델**: `App\Models\Production\WorkResult` - **workOrder()**: belongsTo → `work_orders` - **workOrderItem()**: belongsTo → `work_order_items` - **worker()**: belongsTo → `users` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` ### prices **모델**: `App\Models\Products\Price` - **clientGroup()**: belongsTo → `client_groups` - **revisions()**: hasMany → `price_revisions` ### price_revisions **모델**: `App\Models\Products\PriceRevision` - **price()**: belongsTo → `prices` ### push_device_tokens **모델**: `App\Models\PushDeviceToken` ### push_notification_settings **모델**: `App\Models\PushNotificationSetting` ### lots **모델**: `App\Models\Qualitys\Lot` - **item()**: belongsTo → `items` - **sales()**: hasMany → `lot_sales` ### lot_sales **모델**: `App\Models\Qualitys\LotSale` - **lot()**: belongsTo → `lots` ### quotes **모델**: `App\Models\Quote\Quote` - **client()**: belongsTo → `clients` - **item()**: belongsTo → `items` - **finalizer()**: belongsTo → `users` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` - **items()**: hasMany → `quote_items` - **revisions()**: hasMany → `quote_revisions` ### quote_formulas **모델**: `App\Models\Quote\QuoteFormula` - **category()**: belongsTo → `quote_formula_categories` - **ranges()**: hasMany → `quote_formula_ranges` - **mappings()**: hasMany → `quote_formula_mappings` - **items()**: hasMany → `quote_formula_items` ### quote_formula_categorys **모델**: `App\Models\Quote\QuoteFormulaCategory` - **formulas()**: hasMany → `quote_formulas` ### quote_formula_items **모델**: `App\Models\Quote\QuoteFormulaItem` - **formula()**: belongsTo → `quote_formulas` ### quote_formula_mappings **모델**: `App\Models\Quote\QuoteFormulaMapping` - **formula()**: belongsTo → `quote_formulas` ### quote_formula_ranges **모델**: `App\Models\Quote\QuoteFormulaRange` - **formula()**: belongsTo → `quote_formulas` ### quote_items **모델**: `App\Models\Quote\QuoteItem` - **quote()**: belongsTo → `quotes` ### quote_revisions **모델**: `App\Models\Quote\QuoteRevision` - **quote()**: belongsTo → `quotes` - **reviser()**: belongsTo → `users` ### ai_reports **모델**: `App\Models\Tenants\AiReport` - **creator()**: belongsTo → `users` ### approvals **모델**: `App\Models\Tenants\Approval` - **form()**: belongsTo → `approval_forms` - **drafter()**: belongsTo → `users` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` - **steps()**: hasMany → `approval_steps` - **approverSteps()**: hasMany → `approval_steps` - **referenceSteps()**: hasMany → `approval_steps` ### approval_forms **모델**: `App\Models\Tenants\ApprovalForm` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` - **approvals()**: hasMany → `approvals` ### approval_lines **모델**: `App\Models\Tenants\ApprovalLine` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` ### approval_steps **모델**: `App\Models\Tenants\ApprovalStep` - **approval()**: belongsTo → `approvals` - **approver()**: belongsTo → `users` ### attendances **모델**: `App\Models\Tenants\Attendance` - **user()**: belongsTo → `users` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` ### bank_accounts **모델**: `App\Models\Tenants\BankAccount` - **assignedUser()**: belongsTo → `users` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` ### barobill_settings **모델**: `App\Models\Tenants\BarobillSetting` - **tenant()**: belongsTo → `tenants` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` ### bills **모델**: `App\Models\Tenants\Bill` - **client()**: belongsTo → `clients` - **bankAccount()**: belongsTo → `bank_accounts` - **creator()**: belongsTo → `users` - **installments()**: hasMany → `bill_installments` ### bill_installments **모델**: `App\Models\Tenants\BillInstallment` - **bill()**: belongsTo → `bills` - **creator()**: belongsTo → `users` ### cards **모델**: `App\Models\Tenants\Card` - **assignedUser()**: belongsTo → `users` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` ### data_exports **모델**: `App\Models\Tenants\DataExport` - **tenant()**: belongsTo → `tenants` - **creator()**: belongsTo → `users` ### departments **모델**: `App\Models\Tenants\Department` - **parent()**: belongsTo → `departments` - **children()**: hasMany → `departments` - **departmentUsers()**: hasMany → `department_user` - **users()**: belongsToMany → `users` - **permissionOverrides()**: morphMany → `permission_overrides` ### deposits **모델**: `App\Models\Tenants\Deposit` - **client()**: belongsTo → `clients` - **bankAccount()**: belongsTo → `bank_accounts` - **creator()**: belongsTo → `users` ### expected_expenses **모델**: `App\Models\Tenants\ExpectedExpense` - **client()**: belongsTo → `clients` - **bankAccount()**: belongsTo → `bank_accounts` - **creator()**: belongsTo → `users` ### leaves **모델**: `App\Models\Tenants\Leave` - **user()**: belongsTo → `users` - **approver()**: belongsTo → `users` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` - **userProfile()**: hasOne → `tenant_user_profiles` ### leave_balances **모델**: `App\Models\Tenants\LeaveBalance` - **user()**: belongsTo → `users` ### leave_grants **모델**: `App\Models\Tenants\LeaveGrant` - **user()**: belongsTo → `users` - **creator()**: belongsTo → `users` ### leave_policys **모델**: `App\Models\Tenants\LeavePolicy` - **tenant()**: belongsTo → `tenants` ### loans **모델**: `App\Models\Tenants\Loan` - **withdrawal()**: belongsTo → `withdrawals` ### payments **모델**: `App\Models\Tenants\Payment` - **subscription()**: belongsTo → `subscriptions` ### payrolls **모델**: `App\Models\Tenants\Payroll` - **user()**: belongsTo → `users` - **confirmer()**: belongsTo → `users` - **withdrawal()**: belongsTo → `withdrawals` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` ### payroll_settings **모델**: `App\Models\Tenants\PayrollSetting` - **tenant()**: belongsTo → `tenants` ### department_users **모델**: `App\Models\Tenants\Pivots\DepartmentUser` - **department()**: belongsTo → `departments` - **user()**: belongsTo → `users` ### plans **모델**: `App\Models\Tenants\Plan` - **subscriptions()**: hasMany → `subscriptions` ### purchases **모델**: `App\Models\Tenants\Purchase` - **client()**: belongsTo → `clients` - **withdrawal()**: belongsTo → `withdrawals` - **creator()**: belongsTo → `users` ### receivings **모델**: `App\Models\Tenants\Receiving` - **item()**: belongsTo → `items` - **creator()**: belongsTo → `users` ### salarys **모델**: `App\Models\Tenants\Salary` - **employee()**: belongsTo → `users` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` - **employeeProfile()**: hasOne → `tenant_user_profiles` ### sales **모델**: `App\Models\Tenants\Sale` - **client()**: belongsTo → `clients` - **deposit()**: belongsTo → `deposits` - **creator()**: belongsTo → `users` ### setting_field_defs **모델**: `App\Models\Tenants\SettingFieldDef` - **tenantSettings()**: hasMany → `tenant_field_settings` ### sites **모델**: `App\Models\Tenants\Site` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` ### stocks **모델**: `App\Models\Tenants\Stock` - **creator()**: belongsTo → `users` - **lots()**: hasMany → `stock_lots` ### stock_lots **모델**: `App\Models\Tenants\StockLot` - **stock()**: belongsTo → `stocks` - **receiving()**: belongsTo → `receivings` - **creator()**: belongsTo → `users` ### subscriptions **모델**: `App\Models\Tenants\Subscription` - **tenant()**: belongsTo → `tenants` - **plan()**: belongsTo → `plans` - **payments()**: hasMany → `payments` ### tax_invoices **모델**: `App\Models\Tenants\TaxInvoice` - **creator()**: belongsTo → `users` - **updater()**: belongsTo → `users` - **reference()**: morphTo → `(Polymorphic)` ### tenants **모델**: `App\Models\Tenants\Tenant` - **plan()**: belongsTo → `plans` - **subscription()**: belongsTo → `subscriptions` - **userTenants()**: hasMany → `user_tenants` - **roles()**: hasMany → `roles` - **userRoles()**: hasMany → `user_roles` - **users()**: belongsToMany → `users` - **files()**: morphMany → `files` ### tenant_field_settings **모델**: `App\Models\Tenants\TenantFieldSetting` - **fieldDef()**: belongsTo → `setting_field_defs` - **optionGroup()**: belongsTo → `tenant_option_groups` ### tenant_option_groups **모델**: `App\Models\Tenants\TenantOptionGroup` - **values()**: hasMany → `tenant_option_values` ### tenant_option_values **모델**: `App\Models\Tenants\TenantOptionValue` - **group()**: belongsTo → `tenant_option_groups` ### tenant_stat_fields **모델**: `App\Models\Tenants\TenantStatField` - **tenant()**: belongsTo → `tenants` ### tenant_user_profiles **모델**: `App\Models\Tenants\TenantUserProfile` - **user()**: belongsTo → `users` - **department()**: belongsTo → `departments` - **manager()**: belongsTo → `users` ### withdrawals **모델**: `App\Models\Tenants\Withdrawal` - **client()**: belongsTo → `clients` - **bankAccount()**: belongsTo → `bank_accounts` - **card()**: belongsTo → `cards` - **creator()**: belongsTo → `users` ### user_invitations **모델**: `App\Models\UserInvitation` - **tenant()**: belongsTo → `tenants` - **role()**: belongsTo → `roles` - **inviter()**: belongsTo → `users`