# Search
# altes Search-Model
=> Beinhaltet die Suchen der Nutzer.
Functionality- Implementierung: ✅
- Erweiterung:
- Ausgliedern verschiedener Eigenschaften (ggf.):
indexing=> Pivottabelleconsulting=> Pivottabellequalification_addition=> Pivottabellesearch_reason=> ❌ (Suchgrund fällt weg)- =>
is_hiddenfällt somit auch weg
# Data
CREATE TABLE `pyou_searches` (
`search_uuid` varchar(36) NOT NULL,
`search_hash` varchar(36) DEFAULT NULL,
`user_uuid` varchar(36) DEFAULT NULL,
`business_uuid` varchar(36) DEFAULT NULL,
`consulting` tinyint(1) DEFAULT NULL,
`able_to_move` tinyint(1) DEFAULT NULL,
`is_anonymous` tinyint(1) DEFAULT '0',
`is_hidden` tinyint(1) DEFAULT '0',
`search_reason` varchar(36) DEFAULT NULL,
`additional_info` varchar(255) DEFAULT NULL,
`qualification_addition` varchar(255) DEFAULT '[""]',
`indexing` tinyint(1) DEFAULT '0',
`reinstated_to` varchar(36) DEFAULT NULL,
`reinstated_from` varchar(36) DEFAULT NULL,
`search_ts_indexed` timestamp NULL DEFAULT NULL,
`search_ts_deindexed` timestamp NULL DEFAULT NULL,
`search_ts_done` timestamp NULL DEFAULT NULL,
`search_ts_create` timestamp NULL DEFAULT NULL,
`search_ts_update` timestamp NULL DEFAULT NULL,
`search_ts_delete` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`search_uuid`),
UNIQUE (`search_hash`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
# neues Search-Model
Hilfreiche Ressourcen:
- https://laraveldaily.com/save-users-last-login-time-ip-address/
- https://ryangjchandler.co.uk/articles/track-your-users-last-activity-in-laravel
Beziehungen
- 1-1 zu User (
belongsTo()) - 1-1 zu Business (
belongsTo()) - 1-1 zu Salary (
hasOne()) - 1-n zu Searchfilter (
hasMany()) - 1-n zu Searchmatch (
hasMany()) - 1-n zu Qualificationaddition (
belongsToMany())pivotvia. SearchQualificationaddition
public function up()
{
Schema::create('searches', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->char('hash', 12)->unique();
$table->foreignUuid('user_id')->index()->constrained()->onDelete('cascade');
$table->uuid('business_id');
$table->boolean('able_to_move')->nullable();
$table->boolean('is_anonymous')->nullable();
$table->text('additional_info')->nullable();
$table->uuid('reinstated_to')->nullable();
$table->uuid('reinstated_from')->nullable();
$table->timestamp('done_at')->nullable();
$table->timestamps();
$table->softDeletes();
});
}
# übergeordnetes Thema
2.6 Datenstruktur