/** * Configure a Value parameter, based on the supplied object-type value * * @todo Re-use one Mapper instance * * @param \Google_Service_Datastore_Value $obj_val * @param object $mix_value */ protected function configureObjectValueParamForQuery($obj_val, $mix_value) { if ($mix_value instanceof Entity) { $obj_val->setKeyValue($this->createMapper()->createKey($mix_value)); } elseif ($mix_value instanceof \DateTime) { $obj_val->setDateTimeValue($mix_value->format(\DateTime::ATOM)); } elseif (method_exists($mix_value, '__toString')) { $obj_val->setStringValue($mix_value->__toString()); } else { throw new \InvalidArgumentException('Unexpected, non-string-able object parameter: ' . get_class($mix_value)); } }
/** * Create a query filter on a date property. * @param $name property name * @param $value property value * @param $operator filter operator */ protected static function createDateFilter($name, $value, $operator = 'greaterThan') { $date_value = new Google_Service_Datastore_Value(); $date_time = new DateTime($value); $date_value->setDateTimeValue($date_time->format(DateTime::ATOM)); $property_ref = new Google_Service_Datastore_PropertyReference(); $property_ref->setName($name); $property_filter = new Google_Service_Datastore_PropertyFilter(); $property_filter->setProperty($property_ref); $property_filter->setValue($date_value); $property_filter->setOperator($operator); $filter = new Google_Service_Datastore_Filter(); $filter->setPropertyFilter($property_filter); return $filter; }