Allgemeiner Fehler in Laravel 9.x: Feld „id' hat keinen Standardwert
P粉714780768
P粉714780768 2024-04-06 11:12:54
0
1
524

Ich verwende UUID in meiner Anwendung und habe die Funktion wie online gezeigt wie folgt implementiert:

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';
    }
}

Im Nachhinein gilt das fast überall: Ich versuche eine Pivot-Tabelle auf meinem Produkt so zu erstellen:

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

Die Migration sieht so aus:

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();
    });
}

Wenn ich jedoch beim Säen Folgendes mache:

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

Ich sehe diesen Fehler:

PDOException::("SQLSTATE[HY000]: Allgemeiner Fehler: 1364 Feld 'id' hat keinen Standardwert")

CategoryProductCategory 都使用 Uuidd Funktion, ich weiß nicht, wie ich sie zum Laufen bringen soll.

Danke für jede Hilfe.

P粉714780768
P粉714780768

Antworte allen(1)
P粉731977554

作为可能的解决方案之一,您可以使用自己的模型和数据透视表的特征。

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage