問題タブ [ardent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
634 参照

php - 保存したくないフィールドを検証するためにlaravelでardentを使用できますか?

Ardent にパスワードとパスワード確認の一致をチェックしてもらいたいのですが、パスワード確認をデータベースに保存したくないのは明らかです。では、パスワード確認を保存しようとせずに、アーデントにそれを実行させて検証させるにはどうすればよいですか?

注: password_confirmation プロパティの値が表示されないため、検証はとにかく失敗しています。モデル属性の下でそれを探していると思いますが、私はそれをプライベートプロパティとして設定しました。ただし、モデルの属性として設定すると、これをデータベースに保存しようとします。

0 投票する
6 に答える
2682 参照

laravel-4 - 関連モデルの挿入中に入力可能なリストが無視されました

Ardent を使用していますが、関連モデルの挿入/更新中に $fillable リストを無視するという奇妙な動作に直面しました。次のモデルが定義されています。

今、私はユーザーに新しい連絡先を追加しようとしています:

...そして、SQL挿入エラーが発生しました:

同時に、これは正常に機能しています:

SQL エラーは発生せず、「unknown_field」は無視されました。

ビルダーを介して作業しているときに $fillable フィールドを無視できる理由はありますか?!

0 投票する
1 に答える
899 参照

validation - Laravel 4、Factory Muff、Ardent、Faker を使用した TDD - やり方が間違っている

意味があり機能するデータ モデルのテストを作成したい

私はLaravel のボスのようなモデルをテストしようとして遊んでいます(現在、私は中間管理職の地位を維持するのに苦労していると言えます)。私はArdent自分のデータモデルに使用しています。Factory Muff上で参照されている記事は、非常に素晴らしいように見え、モック オブジェクトの作成を容易にするのに非常に便利です。

Factory Muffしかし、深く掘り下げると、提供できるデータが非常に限られていることがわかります。基本的にランダムな言葉とメールアドレスです。それ以上のものは、静的メソッドをデータ モデルに記述して、モック オブジェクトの有効なデータを生成する必要があるようです。それはあまり役に立たないように思えますが、私はおそらくそれを間違ってやっていると推測していFactory Muffます。

データモデルで

次のデータ検証ルールセットを検討してください。

Factory Muff正しい形式でフォーマットされたデータを生成する静的メソッドを書きたくない限り、名前と電子メールアドレスを超えてこのデータを生成するのにはまったく適していないようです。これは、検証エラーを発生させずにモックオブジェクトを作成できるようにするために私がしなければならないと思うことです:Factory Muff

これは、特にテーブルに 10 から 20 のフィールドがある場合、かなり冗長に見えます。また\Faker\Factory::create()、すべての静的メソッド呼び出しを呼び出すのも好きではありません (具体的な理由はありません。単に好きではないだけです。回避策を知っている場合、または私の恐怖に根拠がない場合は、お知らせください。 .)

データベース シーダーで

開発とテストで使用するために、データベースに大量のガベージを生成するために使用するデータベース シード スクリプトをセットアップしました。Fakerとても直感的で使いやすいです。たとえば、これは上記のデータ セットのシード スクリプトです。

自分がここで何をしているのかを考えれば考えるほど、余計なことをしているように感じます。

質問

  1. テストを実行する前にによって生成されたガベージ データをデータベースにシードしている場合、モック オブジェクトを作成するFaker必要さえありますか? Factory Muffデータベースからのシード データを使用して、コードベースを適切にテストできないでしょうか? なぜ私は嘲笑する必要があるのですか?
  2. 私は全体の要点を逃していFaker Muffますか? 利点はありますか?ランダムワードジェネレーターに過ぎないように思えます。
  3. 私は何を間違っていますか?私はTDDに非常に興味がありますが、とても気が遠くなります。私のコードに悪い慣行やベスト プラクティスの欠如に気付いた場合は、お知らせください。
0 投票する
1 に答える
614 参照

php - 双方向の関係をテストする必要がありますか?

とを使用してモデル間の関係をテストしようとしています。関係を方向でテストできますが、方向でテストするのに問題があります。ArdentFactoryMuffbelongs_tohas_many

私がテストしているモデルは、住宅用不動産賃貸アプリケーションであり、対応する賃貸履歴です。非常に単純化された db スキーマ:

これは私の履歴モデルです:

これは、履歴オブジェクトがレンタル アプリケーションに属していることを確認するための私のテストです。

これはうまくいきます。ただし、関係を逆方向にテストする方法がわかりません。プロジェクト要件では、レンタル アプリケーションには少なくとも 1 つのレンタル履歴オブジェクトが関連付けられている必要がありますこれは私のアプリケーションモデルです:

これは私がhas_many関係をテストしようとしている方法です:

これはErrorException: Undefined property: Illuminate\Database\Eloquent\Collection::$application_id 、単体テストを実行したときに発生します。それは私には理にかなっています。オブジェクトに対応するオブジェクトをFactoryMuff少なくとも 1 つ作成するように指示したことはありません。また、オブジェクトには少なくとも 1 つのオブジェクトが必要であるという要件を強制するコードも作成していません。HistoryApplicationApplicationHistory

質問

  1. 「オブジェクトには少なくとも 1 つのapplicationオブジェクトが必要です」というルールを適用するにはどうすればよいhistoryですか?
  2. has_many関係の方向性をテストするにはどうすればよいですか?
0 投票する
1 に答える
67 参照

orm - 熱烈な水分補給

の違いは何ですか?

? わかりません。最初のプロパティを true に設定すると、常に入力データがモデルにハイドレートされますが、2 番目のプロパティは何ですか?

0 投票する
1 に答える
833 参照

php - Ardent モデルが保存後に検証されない

1 対多の関係でオブジェクトを挿入する際に問題があります。これは私のコードです:

PHP単体テスト

テスト実行は、ユーザー オブジェクトが更新されないことを反映します。なんで?私は何を間違っていますか?以下のコードは既存のオブジェクトの更新を実行することを期待しています// Test assigning user to group 2が、代わりにDB::getQueryLog()選択と挿入のみを表示します。これは本当に迷惑です。

- 編集 -

実際に私を止めているのは検証です。上記のテストで Model->errors() の呼び出しを追加しました。これは、保存後、User オブジェクトに含まれるユーザー名が一意ではなくなったことを示しています。また、password_confirmation フィールドは必須とマークされていましたが、最後の保存時に削除されたため、空でした。

これはばかげているだけで、ここで過ちを犯しているのはEloquentなのか、Ardentなのか、それとも私なのかわかりません。保存前に有効だった場合、保存後も有効なはずですよね?問題の本当の原因を反映するように質問のタイトルを変更します。

0 投票する
1 に答える
1335 参照

php - updateUniques() の使用時に Laravel Ardent がモデルを保存しない

管理パネルのユーザー編集機能を行っています。モデルに「一意の」ルールがある場合に Ardent が推奨するように、コードで updateUniques() を使用しています。

やってみると問題なく通りますが、機種は変わっていません。

私のコード: