나는 다음과 같은 코드가 updated_at : ($entry->save()
은 충분히 이해 여기에, 이전 코드는 중요하지 않다)웅변 동기화 및 created_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);
내가 항목을 만들 위의 코드에서를하고있는 카테고리에 저장 이 항목은 (피벗 테이블을 사용하여) 속해 있으며 태그를 사용하여 동일하게 수행합니다 (그러나 태그가없는 경우 태그 용으로 만듭니다).
그러나 두 피벗 테이블 모두 created_at
필드는 데이터를 삽입 한 후 기본값 (0000-00-00 00:00:00
)으로 남았습니다 (아마 동일하게는 updated_at
과 같지만 테스트하지 않았습니다).
필자는 어떻게 든 자동으로 타임 스탬프를 활성화해야합니까, 아니면 수동으로 직접 입력해야합니까 (단, 더 많은 코딩이 필요하고 sync
을 사용하지 않을 수도 있습니다). 당신이, 당신이 관계 정의에 withTimestamp()
을 포함해야 belongsToMany
관계를 부착 동기화/때 피벗 타임 스탬프를 처리하기 위해
연관 배열을 사용하여'sync'를 제공하는 반면 동기화 할'ids' 배열을 허용합니다. 그리고 피벗 테이블의 타임 스탬프의 경우 - 관계 정의에'withTimestamps()'를 사용해야합니다. 그렇지 않으면 설정/업데이트되지 않습니다. –
@JarekTkaczyk 감사의 말로'withTimestamps()'가이 문제를 해결했습니다. 그러나 동기화를 사용하면 추가 피벗 데이터를 추가 할 수 있습니다. http://laravel.com/docs/4.2/eloquent#working-with-pivot-tables 및'동기화 할 때 피벗 데이터 추가 '절을 참조하십시오. –
예, 할 수 있습니다. 그게 피벗 데이터라면. 나는 관계 열쇠 중 하나를 통과했다고 생각했습니다. –