У меня возникла эта проблема после попытки всех существующих решений из других потоков, ни один из которых не работает, как этот: Ошибка 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');
}
}
Либо есть имя поля с именем display_name в вашей таблице, либо которое должно быть добавлено в модель
Если вы используете версию laravel 5, вы можете попробовать использовать этот код миграции в отдельном файле миграции, например UpdateUtilisateursColumn, чтобы обновить столбец:
Schema::table('utilisateurs', function($table)
{
$table->string('Login', 250)->nullable()->change();
});
Наконец, запустите команду: php artisan migrate
По умолчанию 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'];
установить логин столбца обнуляемым. означает, что если данные по этому полю не переданы по умолчанию, оно всегда должно быть нулевым.