純粋な列挙型フィールドを使用してデータベース内で検索を実行しようとしています:
リーリー これは機能せず、エラー Error Object of class Enum1 Could not be Convert to string.
サポートされている列挙型で検索すると機能します:
リーリーModel->casts で、
Enum1 と
Enum2 の値を指定します。
Enum1::Case1->name で検索できることはわかっていますが、それは私が探しているものではありません。可能であれば、適切な俳優を配置したいと考えています。
この問題に対処する最も簡単/正しい方法は何ですか?
あなたの問題は、MySQL が Enum フィールドをネイティブにサポートしていないことだと思います。
where 句の Eloquent では、2 番目の引数が文字列またはその他の「一般的な」データ型であることも想定されます。
おそらく、ある時点で Laravel eloquent は Enum をサポートするでしょうが、現時点ではそうではないと思います。
以下を使用しても何も問題はありません:
リーリーこちらの記事こちらで実際にEnumsでDBにアクセスする方法について解説していますので、ぜひ読んでみてください。
列挙の目的は、結局のところ、コードを読みやすくすることです。「関心の分離」の原則を使用して、コードを読みやすくします。 PHP8
が登場する前は、定数やその他のトリックを使用していました。