Здравствуйте. Есть поле с выбором даты публикации статьи во View:
<div class="date-picker-wrapper">
<?= $form->field($model, 'publish_at')->widget(DateTimePicker::class); ?>
</div>
Моя задача сохранить эту дату в бд в формате Unix, пример: 1531136820.
Yii::$app->request->post() эту дату отправляет, но когда создается запись в БД она сохраняется как int с числом 1.
Подскажите. пожалуйста, что я упускаю.
Контроллер:
public function actionCreate()
{
$form = new NewsForm();
if ($form->load(Yii::$app->request->post()) && $form->validate() )
{
$news = $this->service->create($form);
//print ('<pre>');var_dump($news);die();
addAlert('success', 'Новость добавлена');
return $this->redirect(['view', 'id' => $news->id]);
}
return $this->render('create', [
'model' => $form,
]);
}
Модель News:
* @property int $id
* @property integer $created_at
* @property integer $publish_at
* @property string $title
* @property string $short_desc
* @property string $body
* @property boolean $is_public
* @property integer $photo_id
* @property integer $user_id
*
* @property Meta $meta
* @property Photo $photo
* @property User $author
*/
class News extends ActiveRecord
{
public $meta;
/**
* {@inheritdoc}
*/
public static function tableName()
{
return 'shop_news';
}
public static function create( $title, $short_desc, $body, $publish_at, $is_public, Meta $meta): self
{
$news = new static();
$news->title = $title;
$news->short_desc = $short_desc;
$news->meta = $meta;
$news->body = $body;
$news->created_at = time();
$news->publish_at = $publish_at;
$news->is_public = $is_public;
$news->user_id = Yii::$app->user->identity->getId();
return $news;
}
public function rules()
{
return [
[['title', 'short_desc', 'body'], 'required'],
[['title'], 'string', 'max' => 65],
[['created_at', 'publish_at'], 'safe'],
//[['publish_at'], 'datetime', 'format' => 'php:d.m.Y H:i', 'timestampAttribute' => 'publish_at'],
[['short_desc'], 'string', 'max' => 100],
[['body'], 'string'],
];
}
public function beforeSave($insert)
{
DateTime::createFromFormat('yyyy/mm/dd hh:ii', $this->publish_at)->getTimestamp();
return parent::beforeSave($insert);
}
NewsService:
public function create(NewsForm $form): News
{
$news = News::create(
$form->title,
$form->short_desc,
$form->body,
$form->is_public,
$form->publish_at,
new Meta(
$form->meta->title,
$form->meta->description,
$form->meta->keywords
)
);
Заранее спасибо!