'contracts', 'name' => 'Contracts', 'description' => 'Contracts and their financial / activity related records.', 'related' => [ // Direct related tables 'accounts', 'activities', 'documents', // polymorphic (contract documents only when used as focus) // Chained relations (dot notation) – resolve via contract -> account -> payments/bookings 'account.payments', 'account.bookings', ], ], [ 'focus' => 'client_cases', 'name' => 'Client Cases', 'description' => 'Client cases and subordinate contractual / financial records.', 'related' => [ 'contracts', // direct contracts under case 'contracts.account', // via contracts (hasOne account) 'activities', // case level activities (and possibly contract-linked) 'documents', // case level documents // Chained relations: 'contracts.account.payments', // contracts -> account -> payments 'contracts.account.bookings', // contracts -> account -> bookings 'contracts.documents', // contracts -> documents (polymorphic) ], ], ]; foreach ($entities as $data) { ArchiveEntity::query()->updateOrCreate( ['focus' => $data['focus']], [ 'name' => $data['name'], 'description' => $data['description'], 'related' => $data['related'], 'enabled' => true, ] ); } } }