# Generelles

Hier werden die einzelnen Models aufgelistet.
Die Wiki-Seiten der Models haben das alte Model (Version 1) und die neuen Models (Version 2) + Anmerkungen und Überlegungen.
Es wird versucht diese Informationen möglichst aktuell zu halten, dies kann aber nicht garantiert werden.

# Datenbank Seeders Übersicht

# Einführung

Die Laravel-Anwendung Placing-Me nutzt ein umfassendes Seeder-System zur Initialisierung der Datenbank mit Grunddaten, Testdaten und statischen Inhalten. Das Hauptseeder-System ist hierarchisch strukturiert und wird über den DatabaseSeeder koordiniert.

# Haupt-Seeder-Struktur

# DatabaseSeeder (Haupteinstiegspunkt)

Datei: database/seeders/DatabaseSeeder.php

Der DatabaseSeeder ist der Haupteinstiegspunkt und orchestriert den gesamten Seeding-Prozess in folgender Reihenfolge:

  1. StaticSeeder - Statische Grunddaten
  2. ContentSeeder - Inhaltsdaten
  3. UserAccountSeeder - Benutzerkonten und Profile
  4. SearchAndContactSeeder - Suchen und Kontakte
  5. GooglejobsindexSeeder - Google Jobs Integration
  6. Automatische Suchmatches - Generierung von Suchergebnissen für aktive Suchen

Nach dem Seeding werden automatisch Suchmatches für alle aktiven Suchen generiert und die Anzahl der generierten Matches sowie die E-Mail-Adressen des ersten Jobsuchenden und Unternehmens ausgegeben.

# Seeder-Kategorien

# 1. Statische Grunddaten (StaticSeeder)

Zweck: Befüllung der Datenbank mit unveränderlichen Grunddaten, die für den Betrieb der Anwendung erforderlich sind.

Enthaltene Seeders:

  • CooperationSeeder - Kooperationspartnerdaten
  • BusinessSeeder - Geschäftsbereiche (Optik, Audiologie)
  • FilterSeeder & FiltervalueSeeder - Such- und Filteroptionen
  • UserinformationtagSeeder - Benutzerinformations-Tags
  • StateSeeder - Status-Definitionen
  • KnowncompanyLongSeeder - Bekannte Unternehmen
  • NotificationtriggerSeeder & NotificationpreferenceSeeder - Benachrichtigungseinstellungen
  • SocialaccountSeeder - Social Media Account-Typen
  • PurchasingpoolSeeder - Einkaufsgemeinschaften
  • StaticTopicSeeder - Statische Themen
  • ReferralsourceSeeder - Empfehlungsquellen
  • BenefitSeeder & BenefitBusinessSeeder - Vorteile und Geschäftsvorteile
  • PlaceSeeder - Orte und Standorte
  • AdvantageSeeder - Unternehmensvorteile
  • InterviewquestionSeeder & BusinessInterviewquestionSeeder - Interview-Fragen
  • SearchreasonSeeder & SearchadditionSeeder - Such-Gründe und -Zusätze
  • BookSeeder - Bücher/Ressourcen
  • ChattemplateSeeder - Chat-Vorlagen
  • RedirectSeeder - URL-Weiterleitungen
  • FailedreasonSeeder & DeletereasonSeeder - Fehlschlag- und Löschgründe
  • SliderDataSeeder - Slider-/Carousel-Daten
  • CountrySeeder - Länderdaten
  • PlzSeeder - Postleitzahlen für DE, AT, CH, LU (aus CSV-Datei)
  • FaqSeeder - Häufig gestellte Fragen
  • ConditionsOfParticipationSeeder - Teilnahmebedingungen
  • JobSeeder - Job-Kategorien

# 2. Inhaltsdaten (ContentSeeder)

Zweck: Befüllung mit redaktionellen Inhalten und Benutzerfeedback.

Enthaltene Seeders:

  • FeedbackSeeder - Benutzer-Feedback und Bewertungen
  • FaqSeeder - FAQ-Einträge

# 3. Benutzerkonten (UserAccountSeeder)

Zweck: Erstellung von Benutzerkonten, Profilen und zugehörigen Daten.

Enthaltene Seeders:

  • AdminUserSeeder - Administrator-Benutzer
  • UserSeeder - Reguläre Benutzer mit Factory-Pattern (10 Benutzer)
  • TwoRolesSeeder - Spezielle Benutzer mit beiden Rollen (Jobsucher & Unternehmen)
  • PresentationSeeder - Unternehmenspräsentationen
  • PresentationOfTheWeekSeeder - Präsentation der Woche
  • BankinformationSeeder - Bankdaten

# 4. Such- und Kontaktdaten (SearchAndContactSeeder)

Zweck: Generierung von Suchen, Kontakten und Kommunikationsdaten.

Enthaltene Seeders:

  • SearchSeeder - Jobsucher-Suchanfragen
  • ContactSeeder - Kontakte zwischen Jobsuchern und Unternehmen
  • SharedmediaSeeder - Geteilte Medieninhalte
  • OutcomeSeeder - Ergebnisse und Outcomes
  • ChatmessageSeeder - Chat-Nachrichten

# 5. Google Jobs Integration (GooglejobsindexSeeder)

Zweck: Integration mit Google for Jobs.

# Spezielle Seeders

# PlzSeeder (CSV-basiert)

  • Typ: CsvSeeder
  • Datenquelle: /database/csvs/DE_AT_CH_LU_plz.csv
  • Zweck: Import von Postleitzahlen für Deutschland, Österreich, Schweiz und Luxemburg
  • Besonderheit: Nutzt CsvSeeder-Package für effizienten Datenimport

# UserSeeder (Factory-basiert)

  • Erstellt: 10 Benutzer mit realistischen Zeitstempeln
  • Zusätzliche Daten: E-Mail-Adressen, Addressen, Benutzerinformationen, Newsletter-Abonnements
  • Verknüpfungen: Automatische Erstellung von abhängigen Datensätzen

# BigSeeder

  • Zweck: Großvolumiger Datenimport für Lastests oder umfangreiche Testdaten
  • Verwendung: Nicht im Standardablauf enthalten, für spezielle Anforderungen

# Alternative Seeder-Konfigurationen

# TwoRolesSeederSlim

  • Alternative: Schlankere Version des TwoRolesSeeder
  • Verwendung: Für reduzierte Testdatenmengen

# JustUSersNoSearchesSeeder

  • Zweck: Erstellt nur Benutzer ohne Suchen
  • Verwendung: Für spezifische Testszenarien

# API-Integration Seeders

  • ApiConstantsSeeder - API-Konstanten
  • ApiServiceSeeder - API-Service-Konfigurationen
  • ValuemapperGeersSeeder & SalarytableGeersSeeder - Geers-spezifische Daten-Mappings
  • SearchbenefitsGeersSeeder - Geers-spezifische Suchvorteile

# Verwendung der Seeders

# Vollständige Datenbank-Neuinitialisierung

php artisan migrate:fresh --seed

# Nur Seeders ausführen

php artisan db:seed

# Spezifischen Seeder ausführen

php artisan db:seed --class=StaticSeeder

# Erforderliche Umgebungsvariablen

  • GOOGLE_API_KEY - Erforderlich für Kontakt-Seeding und Maps-Integration
  • Ohne Google API Key schlägt das Seeding fehl

# Wichtige Hinweise

  1. Reihenfolge: Die Seeders müssen in der korrekten Reihenfolge ausgeführt werden (Abhängigkeiten beachten)
  2. Google API Key: Für erfolgreiches Seeding ist ein gültiger Google API Key erforderlich
  3. Automatische Suchmatches: Nach dem Seeding werden automatisch Suchergebnisse für alle aktiven Suchen generiert
  4. Testdaten: Die Factory-Seeders erstellen realistische Testdaten mit korrekten Zeitstempeln und Beziehungen
  5. CSV-Import: Große Datenmengen (wie PLZ-Daten) werden über CSV-Import effizient geladen

# Ausgabe nach erfolgreichem Seeding

Das System gibt nach dem Seeding folgende Informationen aus:

  • Anzahl der generierten Searchmatches
  • E-Mail-Adresse des ersten Jobsuchers
  • E-Mail-Adresse des ersten Unternehmens

Diese Informationen helfen bei der Verifikation des erfolgreichen Seeding-Prozesses und beim Login für Testzwecke.

# Models

⚠ Die Models sind möglicherweise nicht mehr auf dem neusten Stand!

Sämtliche (eigene) Models befinden sich in dem Ordner app/Models (es werden ggf. Models von packages verwendet, die dann im jeweilige vendor-Ordner liegen.
Der Code der Models sollen möglichst einheitlich gestaltet werden und dies wird durch PHPInsights (opens new window) schon zum Teil umgesetzt.
Die Beziehungen (Relationships) der Models sollen möglichst als letzte public function aufgelistet werden und durch einen */ relationships */-Kommentar abgetrennt werden.
Die einzelnen Beziehungen sollen alphabetisch sortiert sein.
Das selbe gilt für die Implementierung der Models ins Nova (als Resources).
Diese sollen als letztes im fields()-array auftauchen und auch durch einen /* relationship */-Kommentar getrennt werden.

*2.6. Address
*2.6. Advantage
*2.6. ApiCall
*2.6. ApiService
*2.6. ApiServiceSearch
*2.6. Bankinformation
*2.6. Benefit
*2.6. BenefitBusiness
*2.6. BenefitPresentation
*2.6. Book
*2.6. Business
*2.6. BusinessCompany
*2.6. BusinessInterviewquestion
*2.6. BusinessPurchasingpool
*2.6. Chat
*2.6. Chatmessage
*2.6. ChatTemplate
*2.6. Company
*2.6. CompanyJobseeker
*2.6. CompanyPurchasingpool
*2.6. Companyreason
*2.6. Companyvideo
*2.6. ConditionsOfParticipation
*2.6. Contact
*2.6. Contactmessage
*2.6. ContactState
*2.6. Contactperson
*2.6. Cooperation
*2.6. Country
*2.6. CustomLog
*2.6. Cooperation
*2.6. Deletereason
*2.6. DeletereasonUser
*2.6. Event
*2.6. Failedreason
*2.6. FailedreasonOutcome
*2.6. Faq
*2.6. Feedback
*2.6. Filter
*2.6. Filtervalue
*2.6. Googlejobsindex
*2.6. Interviewquestion
*2.6. InterviewquestionPresentation
*2.6. Jobseeker
*2.6. JobseekerKnowncompany
*2.6. Knowncompany
*2.6. Media
*2.6. MissingPage
*2.6. Mobileverification
*2.6. Newslettersubscription
*2.6. Notificationpreference
*2.6. NotificationpreferenceUser
*2.6. Notificationtrigger
*2.6. NotificationtriggerUser
*2.6. Oldemailaddress
*2.6. Outcome
*2.6. Place
*2.6. PlaceSearch
*2.6. Plz
*2.6. Presentation
*2.6. PresentationOfTheWeek
*2.6. Purchasingpool
*2.6. Redirect
*2.6. Referralsource
*2.6. ReferralsourceUser
*2.6. ReferralsourceVisit
*2.6. Salary
*2.6. Salarytable
*2.6. Search
*2.6. Searchaddition
*2.6. Searchbenefitsmapper
*2.6. Searchfilter
*2.6. Searchmatch
*2.6. Searchreason
*2.6. SearchSearchaddition
*2.6. SearchSearchreason
*2.6. Sharedmedia
*2.6. Signup
*2.6. SliderData
*2.6. Socialaccount
*2.6. SocialaccountUser
*2.6. State
*2.6. Task
*2.6. Topic
*2.6. User
*2.6. Userinformation
*2.6. Userinformationtag
*2.6. UserinformationUserinformationtag
*2.6. Usernote
*2.6. Valuemapper
*2.6. Visit

# übergeordnetes Thema

  1. Technische Informationen
Last Updated: 9/25/2025, 2:24:07 PM