Код: Выделить всё
public function addCode()
{
return Yii::$app->user->identity->CODE;
}
public function convertDate($value)
{
return date('Y-m-d H:i:s', $value);
}
public function rules()
{
return [
['CODE', 'filter', 'filter' => [$this, 'addCode']],
[['latitude', 'longitude', 'date', 'CODE'], 'trim'],
[['date', 'latitude', 'longitude', 'CODE'], 'required'],
[['latitude', 'longitude'], 'number', 'numberPattern' => '/^\s*[-+]?[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?\s*$/'],
['date', 'integer'],
['date', 'filter', 'filter' => [$this, 'convertDate']],
['date', 'date', 'format' => 'yyyy-M-d H:m:s'],
['date', 'string'],
[['CODE', 'date'], 'unique', 'targetAttribute' => ['CODE', 'date']]
];
}
и последнее правило не отрабатывает, а выдает ошибку:
"message": "SQLSTATE[22007]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Ошибка преобразования даты или времени из символьной строки.\nThe SQL being executed was: SELECT CASE WHEN EXISTS(SELECT * FROM [coordinates] WHERE ([coordinates].Код: Выделить всё
='ТМ0006452') AND ([coordinates].[date]='111112222ghj7')) THEN 1 ELSE 0 END",[/quote] т.е. в последнее правило валидации передается сырое значение date