Laravel 5.2: カスタム主キー変換の問題
Laravel 5.2 の Eloquent ORM で文字列をカスタム主キーとして利用する場合、から取得するときにキー値が 0 に変換されるという問題が発生する可能性があります。 database.
説明:
Laravel は、データベースの列の型に一致するように属性値を自動的にキャストします。デフォルトでは、自動インクリメント主キーは整数とみなされます。ただし、この場合、主キーとして文字列を使用しているため、値が誤って変換されます。
解決策:
この問題を解決するには、次のようにします。主キーが文字列であり、自動的にインクリメントされないことを明示的に指定する必要があります。これを行うには、次のコードをモデルに追加します。
protected $primaryKey = 'your_key_name'; public $incrementing = false;
必ず 'your_key_name' を主キー列の実際の名前に置き換えてください。
詳しい説明:
Laravel 6.0 以降では、$keyType も設定する必要がありますproperty to 'string':
protected $keyType = 'string';
これにより、主キーが文字列であることが明示的に指定され、潜在的な型変換が防止されます。
このソリューションを実装すると、文字列を使用できるようになります。変換の問題が発生することなく、Laravel Eloquent モデルのカスタム主キーとして使用できます。
以上がLaravel 5.2: 文字列の主キーが 0 に変換されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。