Rumah > Soal Jawab > teks badan
Saya menggunakan UUID dalam aplikasi saya dan saya telah melaksanakan ciri seperti yang ditunjukkan dalam talian seperti ini:
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'; } }
Sebaliknya, ini terpakai hampir di semua tempat: Saya cuba mencipta jadual pangsi pada produk saya seperti ini:
public function categories(): BelongsToMany { return $this->belongsToMany( Category::class, ProductCategory::class, 'product_id', 'category_id' ); }
Penghijrahan kelihatan seperti ini:
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(); }); }
Namun, setiap kali saya melakukan perkara berikut semasa menyemai:
Product::first()->categories()->sync(Categories::all()->pluck('id'));
Saya nampak ralat ini:
CiriPDOException::("SQLSTATE[HY000]: Ralat umum: 1364 Medan 'id' tidak mempunyai nilai lalai")
Category
和 ProductCategory
都使用 Uuidd
, saya tidak tahu cara membuatnya berfungsi.
Terima kasih atas sebarang bantuan.
P粉7319775542024-04-07 09:44:23
Sebagai salah satu penyelesaian yang mungkin, anda boleh menggunakan model dan ciri jadual pangsi anda sendiri.
Lagi: https://laravel.com/docs/ 9.x/eloquent-relationships#defining-custom-intermediate-table-models.