не может отправить запрос в Laravel - PullRequest
2 голосов
/ 26 февраля 2020

Я пытаюсь отправить запрос, и он выдаёт мне эту ошибку. Я думаю, что ошибка вызвана чем-то в контроллере, но я не знаю, что это такое. Я предоставил все соответствующие коды. Может кто-нибудь помочь мне исправить ошибку?

SQLSTATE [23000]: Нарушение ограничения целостности: 1048 Столбец 'first_name' не может быть пустым (SQL: вставить в users (first_name, last_name, email, phone_number, password, updated_at, created_at) значения (?,?,?,?,?, 2020-02-26 07:54:56, 2020-02 -26 07:54:56))

Контроллер:

public function store(Request $request)
    {

        $user = new User();

        $user->first_name = $request->first_name;
        $user->last_name = $request->last_name;
        $user->email = $request->email;
        $user->phone_number = $request->phone_number;
        $user->password = $request->password;

        $user->save();

        return new UserResource($user);
    }

Модель:

class User extends Model
{
    protected $guarded = [];
}

UserResource:

public function toArray($request)
    {
        // return parent::toArray($request);

        return [
            'id' => $this->id,
            'first_name' => $this->first_name,
            'last_name' => $this->last_name,
            'email' => $this->email,
            'phone_number' => $this->phone_number,
            'password' => $this->password
        ];
    }
}

миграция:

public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('first_name');
            $table->string('last_name');
            $table->string('email');
            $table->string('phone_number');
            $table->string('password');
            $table->timestamps();
        });
    }

Тело запроса:

{
    'first_name': 'ayman',
    'last_name': 'tarig',
    'email': 'ayman@email.com',
    'phone_number': '010010100',
    'password': '1234'
}

Ответы [ 3 ]

1 голос
/ 26 февраля 2020

Сначала я думаю, что вы можете использовать Массовое назначение из Eloquent ORM,

Из Laravel Eloquent ORM Documentation

Вы также можете использовать метод create, чтобы сохранить новую модель в одну строку. Вставленный экземпляр модели будет возвращен вам из метода. Однако перед тем, как это сделать, вам нужно будет указать в модели атрибут, который можно заполнить или защитить, так как все модели Eloquent по умолчанию защищают от массового назначения.

Чтобы обновить поле, вы должны обновить его. необходимо использовать массив fillable модели Eloquent:

class User extends Model
{
    protected $guarded = [];

    protected $fillable = [
            'id',
            'first_name',
            'last_name',
            'email',
            'phone_number',
            'password',
     ];
}

Вы можете использовать пользовательский запрос, чтобы убедиться, что предоставленные данные имеют правильный формат и не равны нулю: laravel .com / docs / master / validation # form-request-validation

Для более сложного сценария проверки ios вы можете создать sh для создания «Форма запроса». Запросы форм - это пользовательские классы запросов, которые содержат логи проверки c.

следующим образом:

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    return [
        'first_name' => 'required',
        'last_name' => 'required',
        'email' => 'required|email',
        'phone_number' => 'required',
        'password' => 'required'
    ];
}
0 голосов
/ 26 февраля 2020

Убедитесь, что вы импортируете Illuminate \ Http \ Request

use Illuminate\Http\Request;

Затем, используя почтальон, попытайтесь вызвать ваш пост.

0 голосов
/ 26 февраля 2020

если вы отправляете этот запрос через форму html, убедитесь, что имя каждого ввода введено правильно. А если вы пользуетесь почтальоном, убедитесь, что вы отправили почтовый запрос, потому что все выглядит хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...