Я создаю альтернативный Id-файл с именем alterId в базе данных и использую его в некоторых случаях вместо поля id.
Например, при редактировании данных клиент отправляет значение alterId вместо идентификатора ...
Поскольку это часть кода, который часто повторяется, я расширил класс Illuminate \ Database \ Eloquent \ Model этимкласс:
namespace App\NewModel;
use Illuminate\Database\Eloquent\Model;
class NewModel extends Model
{
public function __construct()
{
parent::__construct();
$this->attributes['alterId'] = $this->generateAlterId();
}
public static function convertIdToAlterId($alterId)
{
// some logic to convert if to alterId
}
public static function convertAlterIdToId($id)
{
// some logic to alterId to id
}
public function generateAlterId($tokenSize = 32)
{
// logic to generate alter id ftom time stamp or something like that...
}
}
, который автоматически генерирует alterId и имеет возможность конвертировать из одного в другой.
Моя проблема заключается в том, что когда я пытаюсь заполнить какой-то элемент этой расширенной моделью, ничего не происходит, нетошибки и отсутствие вставленных данных в базу данных.
Для посева я использую эту модель
namespace App;
use Illuminate\Database\Eloquent\Model;
use \App\NewModel;
class TestModel extends NewModel
{
protected $fillable = ['name'];
protected $dates = ['created_at', 'updated_at'];
}
это простая фабрика:
use Faker\Generator as Faker;
$factory->define(App\TestModel::class, function (Faker $faker) {
return [
'name' => $faker->firstNameMale,
'created_at' => \Carbon\Carbon::now(),
'updated_at' => \Carbon\Carbon::now()
];
});
и сеялка:
use Illuminate\Database\Seeder;
use \App\TestModel;
class TestModelsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//truncate
TestModel::truncate();
//create
factory(TestModel::class, 100)->create();
}
}
Как я уже говорил, при запуске команды
php artisan migrate:refresh --seed
ничего не происходит, даже ошибки не отображается.Но если я изменяю код и изменяю TestModel так, чтобы он наследовал модель вместо NewModel, то все работает нормально, база данных получает вставки!
Что я сделал не так в этом коде?