Ich habe den folgenden Code:Eloquent Sync und created_at/updated_at
$entry->save();
$categories = [];
$categories[Input::get('main_category')] = ['main' => 1];
for ($i=1; $i<=4 ; ++$i) {
$input = Input::get('category_'.$i);
if ($input != '') {
$categories[$input] = ['main' => 0];
}
}
$entry->categories()->sync($categories);
$inTags = explode(',', trim(Input::get('tags'), ','));
$tags = [];
foreach ($inTags as $tag) {
$tag = trim($tag);
if ($tag == '') {
continue;
}
$fTag = Tag::firstOrCreate(array('name' => $tag));
$tags[$fTag->id] = ['entry_id' => $entry->id];
}
$entry->tags()->sync($tags);
In obigem Code I-Eintrag erstellen ($entry->save()
hier gerade genug ist, um es zu verstehen, früher Code ist nicht wichtig), dann speichern Sie auf, welche Kategorien dieser Eintrag gehört zu (mit Pivot-Tabelle) und mache das gleiche mit Tags (aber für Tags, wenn das Tag nicht existiert, erstelle ich einen).
Allerdings in beiden Pivot-Tabellen created_at
Feld ist Standard (0000-00-00 00:00:00
) nach dem Einfügen von Daten (wahrscheinlich das gleiche wird mit updated_at
sein, aber ich habe es nicht getestet).
Muss ich Filing-Zeitstempel irgendwie automatisch aktivieren oder muss ich sie manuell ausfüllen (aber wahrscheinlich wird es viel mehr Codierung und keine Verwendung von sync
bedeuten)?
Sie stellen 'sync' mit assoziativem Array bereit, während sie ein Array von' ids' zum Synchronisieren akzeptiert. Und für die Zeitstempel in Ihrer Pivot-Tabelle müssen Sie 'withTimestamps()' in der Beziehungsdefinition verwenden, sonst werden diese nicht gesetzt/aktualisiert. –
@ JarekTkaczyk Danke 'withTimestamps()' löste das Problem. Aber mit 'sync' können Sie zusätzliche Pivot-Daten hinzufügen - siehe http://laravel.com/docs/4.2/eloquent#working-with-pivot-tables und Abschnitt' Pivot-Daten beim Synchronisieren hinzufügen' –
Ja, das können Sie tun wenn es sich um Pivot-Daten handelt. Ich dachte, du hättest einen der Beziehungsschlüssel dort hingelegt. –