suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Allgemeiner Fehler in Laravel 9.x: Feld „id“ hat keinen Standardwert

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粉714780768P粉714780768241 Tage vor490

Antworte allen(1)Ich werde antworten

  • P粉731977554

    P粉7319775542024-04-07 09:44:23

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

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

    Antwort
    0
  • StornierenAntwort