Ошибка заполнения БД: столбец не найден: 1054 Неизвестный столбец «client_id» в «списке полей»

Моя таблица верхнего уровня - это clients, а таблица users принадлежит clients. Это ошибка, которую я получаю при попытке заполнить таблицу пользователя.

Illuminate\Database\QueryException : SQLSTATE[42S22]: Column not found: 1054 Unknown column 'client_id' in 'field list' (SQL: insert into users (client_id, name, email, client_uuid, uuid, updated_at, created_at) values (test, test, [email protected], 412f251d-324b-472e-80ab-b06c5c61e732, aaa4eaa0-fa63-11e8-9402-ebda32c76206, 2018-12-07 21:04:20, 2018-12-07 21:04:20))

Схема клиентов

Schema::connection('mysql_migrations')->create('clients', function (Blueprint $table) {
    $table->uuid('uuid')->primary();
    $table->string('name', 200);
    $table->string('password', 200);
    $table->timestamps();
});

Схема пользователей

Schema::connection('mysql_migrations')->create('users', function (Blueprint $table) {
    $table->uuid('uuid')->primary();
    $table->uuid('client_uuid');
    $table->string('name');
    $table->string('email');
    $table->timestamp('accessed_at')->nullable();
    $table->timestamps();
});

Клиенты Сидер

DB::table('clients')->insert([
    'uuid' => '412f251d-324b-472e-80ab-b06c5c61e732',
    'name' => 'Example client',
    'password' => Hash::make('test'),
]);

Пользователи Seeder

factory(App\User::class, 5)->create([
    'client_uuid' => '412f251d-324b-472e-80ab-b06c5c61e732',
    'name' => 'test',
    'email' => '[email protected]',
]);

Клиентская модель

class Client extends Authenticatable implements JWTSubject
{
    use \BinaryCabin\LaravelUUID\Traits\HasUUID;

    protected $fillable = ['name'];

    public function users()
    {
        return $this->hasMany(User::class, 'client_uuid', 'uuid');
    }

    public function getRouteKeyName()
    {
        return 'client_uuid';
    }

    public function getKeyName()
    {
        return 'uuid';
    }

}

Модель пользователя

class User extends Model
{
    use \BinaryCabin\LaravelUUID\Traits\HasUUID;

    protected $fillable = [
        'name', 'email', 'client_uuid',
    ];

    protected $dates = ['accessed_at'];

    public function client()
    {
        return $this->belongsTo(Client::class, 'client_uuid', 'uuid');
    }

    public function getKeyName()
    {
        return 'uuid';
    }
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
0
1 524
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Он сообщает вам, что столбца users.client_id. нет. В какой-то момент у вас должно было быть дополнительное имя столбца users.client_id рядом с users.client_uuid.. Удалите свои таблицы, снова запустите миграции, а затем повторите попытку сеялки.

Я переименовал столбец с client_id в client_uuid. Но очистка кеша с помощью artisan и повторный запуск миграции не повлияли. Я предполагаю, что «client_id» - это имя поля по умолчанию, и оно где-то создается, и я не перезаписываю его.

Colin M 10.12.2018 23:42

Оказывается, в моей фабрике сидов все еще было имя столбца client_id. Спасибо!

Colin M 17.01.2019 08:37

Другие вопросы по теме