private function assertDirtifies($method) { $model = new Author(); $datetime = new DateTime(); $datetime->attributeOf($model, 'some_date'); $args = func_get_args(); array_shift($args); call_user_func_array(array($datetime, $method), $args); $this->assertHasKeys('some_date', $model->dirtyAttributes()); }
private function assertDirtifies($method) { try { $model = new Author(); } catch (ExceptionDatabase $e) { $this->markTestSkipped('failed to connect. ' . $e->getMessage()); } $datetime = new DateTime(); $datetime->attributeOf($model, 'some_date'); $args = \func_get_args(); \array_shift($args); \call_user_func_array(array($datetime, $method), $args); $this->assertArrayHasKeys('some_date', $model->dirtyAttributes()); }
/** * Assign a value to an attribute. * * @param string $name Name of the attribute * @param mixed &$value Value of the attribute * @return mixed the attribute value */ public function assignAttribute($name, $value) { $table = static::table(); if (!\is_object($value)) { if (\array_key_exists($name, $table->columns)) { $value = $table->columns[$name]->cast($value, static::connection()); } else { $col = $table->getColumnByInflectedName($name); if (!\is_null($col)) { $value = $col->cast($value, static::connection()); } } } // convert php's \DateTime to ours if ($value instanceof \DateTime) { $value = new DateTime($value->format('Y-m-d H:i:s T'), $value->getTimezone()); } // make sure DateTime values know what model they belong to so // dirty stuff works when calling set methods on the DateTime object if ($value instanceof DateTime) { $value->attributeOf($this, $name); } $this->attributes[$name] = $value; $this->flagDirty($name); return $value; }