Laravel "SQLSTATE [HY000]: общая ошибка: 1364 Поле" Логин "не имеет значения по умолчанию ..." - PullRequest
0 голосов
/ 31 декабря 2018

У меня возникла эта проблема после попытки всех существующих решений из других потоков, ни один из которых не работает, как этот: Ошибка MySql: 1364 Поле 'display_name' не имеет значения по умолчанию , если я делаю ->nullable() всемои вкладыши будут пустыми.Вот мой код:

Контроллер:

<?php

namespace App\Http\Controllers;
use App\Utilisateur;

use Illuminate\Http\Request;

class UtilisateursController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('login.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate($request, [
            'username' => 'required',
            //'email' => 'required',
            'password' => 'required',
            //'password_confirmation' => 'required',
            //'telephone' => 'required'
          ]);
          $inscription = new Utilisateur([
            'Login' => $request->get('username'),
            'E-mail' => 'email',
            'Password' => $request->get('password'),
            'Telephone' => 'telephone',
            'created_at' => $request->get(date("Y-m-d H:i:s")),
            'updated_at' => $request->get(date("Y-m-d H:i:s"))
          ]);
          $inscription->save();
          return redirect()->route('login.create')->with('success', 'inscription réussite');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

Модель:

    <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Utilisateur extends Model
{
    protected $fillable = ['username', 'email', 'password', 'telephone'];
}

База данных:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUtilisateursTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('utilisateurs', function (Blueprint $table) {
            $table->increments('ID-User');
            $table->string('Login', 250);
            $table->string('Password', 250);
            $table->string('Telephone', 250);
            $table->string('E-mail', 250)->unique();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('utilisateurs');
    }
}

Ответы [ 4 ]

0 голосов
/ 31 декабря 2018

установить логин столбца обнуляемым.означает, что если данные по этому полю не переданы по умолчанию, оно всегда должно быть нулевым

0 голосов
/ 31 декабря 2018

По умолчанию Laravel имеет много встроенных компонентов в модели, это всего лишь пример. Настройте по своему усмотрению. Я

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;


/**
 * Class Utilisateur
 *
 * @package App
*/

class UtilisateurModel
{


    /**
     * The connection name for the model.
     *
     * @var string
     */
    protected $connection ='';

    /**
     * The attributes that aren't mass assignable.
     *
     * @var array
     */
    protected $guarded = ['id'];

     /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'utilisateurs';

    /**
     * The primary key for the model.
     *
     * @var string
     */

    protected $primaryKey = 'id';

    /**
     * The "type" of the auto-incrementing ID.
     *
     * @var string
     */
    protected $keyType = 'int';

    /**
     * Indicates if the IDs are auto-incrementing.
     *
     * @var bool
     */
    public $incrementing = true;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [];

     /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [];

    /**
     * @var array
     */
    protected $dates = ['created_at','updated_at'];

    /**
     * Indicates if the model should be timestamped.
     *
     * @var bool
     */
    public $timestamps = '';

    /**
     * The storage format of the model's date columns.
     *
     * @var string
     */
    protected $dateFormat ='';




}

Теперь перейдем к описанию

, если вы пропустили какой-либо из полейВ массиве, который может быть заполнен, ошибка может возникать

Jusd добавить все поля таблицы в массив, который можно заполнить

$fillable = ['ID-User','Login','Password','Telephone','E-mail'];

МАНИНАЦИЯ, ЕСЛИ ВЫ ИСПОЛЬЗУЕТЕ ПАРОЛЬНЫЕ ПОЛЯ, ПОЛЬЗОВАТЕЛЬНО ИСПОЛЬЗУЙТЕ $hidden Недвижимость

protected $hidden = ['Password'];
0 голосов
/ 31 декабря 2018

Если вы используете версию laravel 5, вы можете попробовать использовать этот код миграции в отдельном файле миграции, например UpdateUtilisateursColumn, чтобы обновить столбец:

Schema::table('utilisateurs', function($table)
{
    $table->string('Login', 250)->nullable()->change();
});

Наконец, выполните команду: php artisan migrate

0 голосов
/ 31 декабря 2018

Либо есть имя поля с именем display_name в вашей таблице, либо его следует добавить в модель

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