Невозможно установить столбец типа Date с помощью Parse.com PHP SDK — недопустимый тип

Я новичок в Parse.com. Я использовал PHP SDK, чтобы попытаться заполнить некоторые данные. До сих пор у меня не было проблем, кроме невозможности установить значения даты для объектов, у которых есть столбец типа «Дата».

Мой код:

$uploadDate = date("Y-m-d\TH:i:s.u",$instaPost->created_time);
echo $uploadDate;
$photo->set('uploadDate',$uploadDate);
$photo->save();

Эхо-вызов возвращает: 2015-10-06T19:33:36.000000

Parse выдает ошибку: Не удалось создать новый объект с сообщением об ошибке: недопустимый тип для ключа uploadDate, ожидаемая дата, но получена строка

Я также пробовал:

$uploadDate = array(
    "__type" => "Date",
    "iso" => date("c", time())
);

и различные другие комбинации и форматы даты (первый параметр функции date()).

Кто-нибудь знает правильный способ сделать это??


person Baraka    schedule 06.10.2015    source источник


Ответы (2)


Функция Php date() возвращает строку. Итак, $uploadDate имеет строковый тип. Но когда вы пытаетесь установить его для даты типа столбца, это дает ошибку. Это должно решить вашу проблему.

$date = array(
  "__type" => "Date",
  "iso" => date("c", $instaPost->created_time)
 ); 
$photo->set('uploadDate',$date);
$photo->save();
person Nagesh Tembhurnikar    schedule 06.10.2015
comment
Как упоминалось во втором блоке кода выше, я попробовал то, что вы сказали. Использую ли я time() или $instaPost-›created_time, не имеет значения — это просто другое значение. Я получаю сообщение об ошибке, говорящее о том, что функция не ожидает массив, и я пытаюсь использовать setArray. Использование setArray также не работает (я не помню сообщения об ошибке для этого, но я опубликую его сегодня позже - я полагаю, что в основном он говорил об ожидаемом типе Date и полученном типе Array). - person Baraka; 08.10.2015

У меня была такая же проблема. Вы делаете это правильно, но вам не хватает одной вещи.

Вместо использования: $photo->set('uploadDate',$uploadDate);

попробуйте это: $photo->setArray('uploadDate',$uploadDate);

Я также использую эту функцию, которую нашел на форуме parse.com:

function getProperDateFormat($value)
  {
    $dateFormatString = 'Y-m-d\TH:i:s.u';
    $date = date_format($value, $dateFormatString);
    $date = substr($date, 0, -3) . 'Z';
    return $date;
  }

где $value — объект даты php.

Итак, как я собрал все вместе:

$date = new DateTime($year."-".$month."-".$day);
$puzzle->setArray( "date", ["__type" => "Date", "iso" => getProperDateFormat($date)] );

Он отлично работает для меня

person Ignacio Roda    schedule 21.10.2015