そこで、新しい機能を実装する前に単体テストを行っています。テストを実行しましたが、OverflowException で失敗しました: 最大再試行回数は 10000 に達しましたが、一意の値が見つかりません
これは私が実行しているテストです。
ジョブ自体の作成時にエラーが発生するようです。上記のテストは他のプラントをテストし、機能しています。
これは JobFactory.php ファイルです:
リーリーそして、これの移行 (create_jobs_table.php):
リーリーそれでは、何が問題で、なぜこのループが発生するのでしょうか?ジョブの作成に必要な最小限のデータを追加したので、何が足りないのかわかりません。
###ありがとう### ###*** 編集 *** unique とnumberBetween を使用する悪い習慣を見つけた場所へのリンクを提供するように求められました。これは例です。これはあなたが探しているようには機能しません。
問題は、1 から 5 までの 5 つの値を取得しようとする場合です。 (包括的)、4 つしか取得できません。 5番目の数字を超えることはありません
unique()
検証。これは、たとえば、unique の最初のインスタンスを実行する場合に発生するためです。 リーリー
次に、それを別のファクトリーで実行します。それが理にかなっている場合、laravel は通常、前のインスタンスを拡張します (おそらく)。 ただし、以下のようにtrue を渡すと リーリー
1から20まで再度検索を開始しますunique()
インスタンスでは常に true
を渡します。この問題を解決するには、文書化されたアプローチに従うことをお勧めします。 https://laravel.com/docs/9.x/database-test#factoryrelationship
移行テーブルを見ると、SQL レベルでリレーションシップを示しているため、ファクトリが機能しない可能性が高くなります。基本的に、レコードを関連テーブルに含めることが強制されます。そうしないと、SQL がエラーをスローします。 ..