Erreur générale dans Laravel 9.x : le champ 'id' n'a pas de valeur par défaut
P粉714780768
P粉714780768 2024-04-06 11:12:54
0
1
527

J'utilise l'UUID dans mon application et j'ai implémenté la fonctionnalité comme indiqué en ligne comme ceci :

trait Uuid
{
    protected static function boot(): void
    {
        parent::boot();

        static::creating(function (Model $model) {
            if (!$model->getKey()) {
                $model->{$model->getKeyName()} = (string) Str::uuid();
            }
        });
    }

    public function getIncrementing(): bool
    {
        return false;
    }

    public function getKeyType(): string
    {
        return 'string';
    }
}

Rétrospectivement, cela s'applique presque partout : j'essaie de créer un tableau croisé dynamique sur mon produit comme ceci :

public function categories(): BelongsToMany
{
    return $this->belongsToMany(
        Category::class,
        ProductCategory::class,
        'product_id',
        'category_id'
    );
}

La migration ressemble à ceci :

public function up(): void
{
    Schema::create('product_categories', function (Blueprint $table) {
        $table->uuid('id')->primary();
        $table->foreignUuid('product_id')->index();
        $table->foreignUuid('category_id')->index();
        $table->timestamps();
    });
}

Cependant, chaque fois que je fais ce qui suit pendant l'ensemencement :

Product::first()->categories()->sync(Categories::all()->pluck('id'));

Je vois cette erreur :

PDOException::("SQLSTATE[HY000] : Erreur générale : 1364 Le champ 'id' n'a pas de valeur par défaut")

CategoryProductCategory 都使用 Uuidd fonctionnalité, je ne sais pas comment la faire fonctionner.

Merci pour toute aide.

P粉714780768
P粉714780768

répondre à tous(1)
P粉731977554

Comme l'une des solutions possibles, vous pouvez utiliser votre propre modèle et fonctionnalités du tableau croisé dynamique.

Plus : https://laravel.com/docs/9.x/eloquent-relationships#defining-custom-intermediate-table-models.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal