Laravel & quot; SQLSTATE [HY000]: общая ошибка: 1364 Поле «Логин» не имеет значения по умолчанию … & quot;

У меня возникла эта проблема после попытки всех существующих решений из других потоков, ни один из которых не работает, как этот: Ошибка 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');
}
}

2

Решение

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

1

Другие решения

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

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

Наконец, запустите команду: php artisan migrate

1

По умолчанию 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

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

0
По вопросам рекламы [email protected]