Как правильно пользоваться created_at и updated_at (дата создания и обновления поста)?

Собственно все, вроде бы, как обычно: создаем пост - ставим текущую дату в оба поля, обновляем пост - ставим текущую дату в поле updated_at.
А теперь вопрос, по какому полю сортировать посты?
В чем сложность? А сложность вот в чем:
Создаю сегодня пост, но он большой и писать его приходится допустим 2-3 дня, по этому он висит в черновиках. Прошло 2-3 дня, а пост так и не опубликован, ну не дошли руки до него, за то были написаны другие посты за это время. В итоге получаем - если выведем посты по дате создания, то первый пост выйдет в конце, как давно созданный, хотя должен быть последним, выведем по дате обновления будет все как надо казалось бы, НО - нашлась опечатка в одном посте, в другом, поправил по 1 букве там и там и все, посты пересортировались как попало, неправильно получается.

Есть идеи как быть? Кто как выходит из этой ситуации?
Ну и за одно - какую дату выводить в посте? В метатег разумеется пойдет дата последнего изменения, а вот в самом посте дату создания/изменения?

Пока в голову приходит только создания еще 1 поля типа published для хранения даты, но это ж как то не правильно получается
  • Вопрос задан
  • 4736 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Mylistryx
created_at и updated_at использую как логгер создания и обновления публикации, а вот сам статус того, что статья опубликована можно изменять либо через статус записи, либо поле published, которое по умолчанию null, но если мы передаем из формы флаг того, что данная статья опубликована, то делаем $model->touch('published'); В TimestampBehavior есть метод пушаший дату в нужное свойство класса.
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Тут надо задать себе вопрос "а зачем мне нужны эти даты?". Если просто что б было, так может проще сортировать по id?
Если у Вас посты пишет по три для только администратор, так обновляйте в контролере админки created_at или выведите админу возможность менять эту дату в виде datetime picker. Тогда он еще и отложенные публикации сможет делать.
Тут даже если исходить из банальной логики created_at - это дата публикации и не дата внесения в базу данных.
Можно проставлять дату created_at, только при наличии галочки опубликовать, например.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы