Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 23.11.2017 17:36:04

Как рулить полями (`updated_at`, `created_at`) ?

            if ($request->isMethod('POST')) {
                $input = $request->except('_token');
                $validator = Validator::make($input,[
                    'name' => 'bail|required|max:100|min:2',
                    'family' => 'bail|max:100|min:2',
                    'phone' => 'bail|max:25|min:5',
                    'email' => 'bail|required|max:50|min:7|email',
                ]);

                if($validator->fails()){
                    redirect()->route('pageAdd')->withErrors($validator)->withInput();
                }

                $this->user->save($input);

и при методе save()

General error: 1364 Field 'name' doesn't have a default value (SQL: insert into `users` (`updated_at`, `created_at`) values (2017-11-23 17:13:48, 2017-11-23 17:13:48))

содержимое $input

array:5 [▼
  "id" => "2"
  "name" => "den"
  "family" => "TEN"
  "phone" => "345345345"
  "email" => "test@yandex.ru"
]

1) Можно ли както в конфигах указать, что "created_at" заполнять только при создании записи (или при пустом значении) а "updated_at" обновлять при каждом пуке ?
2) как исключить их из обработки? даже если их физически нет в таблице?

Изменено sam (23.11.2017 17:39:02)

Не в сети

#2 23.11.2017 17:56:35

Re: Как рулить полями (`updated_at`, `created_at`) ?

Так у тебя проблема в другом, скорее всего ты не объявил $fillable поля в модели.
Посмотри запрос, ни одно значение не устанавливается, а поле name - не имеет значения по умолчанию.

Не в сети

#3 23.11.2017 18:11:00

Re: Как рулить полями (`updated_at`, `created_at`) ?

эм, dd($this->user);

User {#220 ▼
  #table: "users"
  #fillable: array:5 [▼
    0 => "name"
    1 => "family"
    2 => "phone"
    3 => "email"
    4 => "password"
  ]

как бы всё норм.

Не в сети

#4 23.11.2017 18:15:58

Re: Как рулить полями (`updated_at`, `created_at`) ?

а вот так жрет.. обновляется только update_at
"ок".

        $set_user = User::find($id);
        if (isset($set_user)) {
            if ($request->isMethod('POST')) {

                if ($this->validate($request, User::rules())){
                    $set_user->name = $request->name;
                    $set_user->family = $request->family;
                    $set_user->phone = $request->phone;
                    $set_user->email = $request->email;
                    if ($set_user->save()){
                        dd('ок');
                    }else{
                        dd('не ок');
                    }
                } else {
                    dd('Валидация не пройдена');
                }

и тогда первый вопрос отпадает. остается только
2) как исключить их из обработки? даже если их физически нет в таблице?

Изменено sam (23.11.2017 18:26:50)

Не в сети

#5 23.11.2017 18:28:38

Re: Как рулить полями (`updated_at`, `created_at`) ?

PHP
public $timestamps false;

Не в сети

#6 23.11.2017 18:50:33

Re: Как рулить полями (`updated_at`, `created_at`) ?

AlexeyMezenin, кстати. у вас в подписях, в самом низу сайта, везде упоминается $this->user->create($request()->all());
а почему "$request()" содержит скобки?

Не в сети

#7 23.11.2017 18:53:35

Re: Как рулить полями (`updated_at`, `created_at`) ?

AlexeyMezenin, кстати. у вас в подписях, в самом низу сайта, везде упоминается $this->user->create($request()->all());а почему "$request()" содержит скобки?

Опечатка. Спасибо большое, исправил.

Не в сети

Подвал раздела