#php #mysql #laravel #laravel-4 #php-carbon
#php #mysql #laravel #laravel-4 #php-carbon
Вопрос:
Я пытаюсь заставить другой формат данных работать в laravel 4. Я хочу, чтобы пользователь мог ввести что-то вроде «31.12.2013» (формат: d.m.Y).
Поэтому я использую эти правила в модели
public static $rules = array(
'birthDate' => 'sometimes|date|date_format:d.m.Y'
);
Теперь пользователь может ввести дату в желаемом формате, и валидатор принимает формат. Проблема, с которой я сталкиваюсь, заключается в том, что оператор update выполняется следующим образом.
array(3) {
["query"]=>
string(68) "update `people` set `birthDate` = ?, `updated_at` = ? where `id` = ?"
["bindings"]=>
array(3) {
[0]=>
string(10) "30.11.2014"
[1]=>
string(19) "2014-06-19 19:39:57"
[2]=>
string(2) "22"
}
["time"]=>
float(0,67)
}
Поле даты рождения имеет тип date и поэтому нуждается в другом формате (например, поле «updated_at»).
Должен ли я работать с моим собственным методом setBirthDateAttribute($value)? или есть ли более аккуратная возможность исправить это?
Комментарии:
1. Да, вы можете использовать метод мутатора для установки даты.
2. хм, это кажется мне немного запутанным. если я задам в правилах тип date , laravel уже должен знать, что данное значение должно быть преобразовано в date . Поэтому я думаю, что laravel должен сделать это самостоятельно, о чем вы думаете?
3. Нет, потому что представления дат не стандартизированы. Возможно, вы захотите сохранить его в виде строки, или вы можете использовать компонент database engine с другим стандартным форматом.
4. хорошо, вы правы, тогда собственный метод setAttribute — это решение для использования 🙂 спасибо