Я пытаюсь выяснить, какое отношение имеет заполнение к тому, расширяю ли я модель до базовой модели, которая расширяет eloquent или нет, потому что, когда я превращаю пользовательскую модель в расширение eloquent и запускаю начальный файл, он работает, но я оставляю его Таким образом, он помещает пустые значения для всех заполняемых полей.
Любые идеи относительно того, почему это происходит и как это возможно исправить?
Модель пользователя
<?php
use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;
class User extends BaseModel implements UserInterface, RemindableInterface {
use UserTrait, RemindableTrait, SoftDeletingTrait;
protected $fillable = ['first_name', 'last_name', 'username', 'avatar', 'role_id', 'status_id', 'email_address', 'password'];
protected static $rules = [
'first_name' => 'required',
'last_name' => 'required',
'username' => 'required|unique:users',
'email_address' => 'required|email|unique:users',
'avatar' => 'required|unique:users',
'password' => 'required|confirmed',
'role_id' => 'required',
'status_id' => 'required'
];
public function __construct()
{
parent::__construct();
}
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = array('password', 'remember_token');
/**
* Get the user's full name by concatenating the first and last names
*
* @return string
*/
public function getFullName()
{
return $this->first_name . ' ' . $this->last_name;
}
}
Базовая модель
<?php
class BaseModel extends Eloquent {
protected $errors;
public function __construct()
{
parent::__construct();
}
public static function boot()
{
parent::boot();
static::saving(function($model)
{
return $model->validate();
});
}
public function validate()
{
$validation = Validator::make($this->getAttributes(), static::$rules);
if ($validation->fails())
{
$this->errors = $validation->messages();
return false;
}
return true;
}
public function getErrors()
{
return $this->errors;
}
}
UsersTableSeeder
<?php
// Composer: "fzaninotto/faker": "v1.3.0"use Faker\Factory as Faker;
class UsersTableSeeder extends Seeder {
public function run()
{
User::create([
'first_name' => 'First',
'last_name' => 'Last',
'username' => 'myusername',
'email_address' => '[email protected]',
'avatar' => 'Myava',
'password' => Hash::make('changeme'),
'role_id' => 4,
'status_id' => 1
]);
//create instanances for each fake user
$faker = Faker::create();
$roleIds = UserRole::lists('id');
$statusIds = UserStatus::lists('id');
foreach(range(1, 20) as $index)
{
User::create([
'first_name' => $faker->firstName,
'last_name' => $faker->lastName,
'username' => $faker->username,
'email_address' => $faker->freeEmail,
'avatar' => $faker->lexify('????????'),
'password' => Hash::make($faker->word),
'role_id' => $faker->randomElement($roleIds),
'status_id' => $faker->randomElement($statusIds)
]);
}
}
}
Ваши конструкторы несовместимы с Eloquent.
Избавьтесь от них, так как они ничего не делают или делают совместимыми:
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
}
Других решений пока нет …