問題タブ [datamapper]

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 に答える
1117 参照

ruby - DataMapper には n 個の条件があります

ひょっとして、DataMapper で条件付き関連付けを作成することは可能ですか?

例えば:

そのユーザーが属性を持っている場合にのみ、ユーザーにn個のアプリを持たせたい:developer => true

このようなもの:

User から Developer::User としてサブクラスを作成し、そのクラスで を使用することでこれがhas n可能になることはわかっていますが、関連宣言で直接作成できるかどうかを知りたいです。

ARn を使用するときに私が何とかできたもう 1 つの方法は、関連付けを拡張し、各アクションのメソッドを書き直すことでした。

したがって、拡張モジュールでは、次のようなものを使用できます。

しかし、繰り返しになりますが、可能であればこのソリューションの使用を避けたいと思いますが、DataMapper を使用して迅速かつ直接的な方法を簡単に実行できる場合に限ります :)

前もって感謝します

0 投票する
2 に答える
1887 参照

ruby-on-rails - DataMapper には、Resource DELETE (関連付けからの削除) による n が機能しない

私はこの2つのクラスを持っています、

したがって、次のような新しい投稿ができたら:

次のように、関連付けに追加したり関連付けから削除したりするのに深刻な問題があります。

また、その関連付けから投稿を削除するにはどうすればよいですか? 私は以下を使用していますが、間違いなく機能していません:

したがって、BoltUser 配列からこれを削除する方法が本当にわかりません。

0 投票する
3 に答える
3326 参照

php - ZendFrameworkアプリケーション層のマスター/スレーブスイッチ

アプリケーション層内でマスター/スレーブスイッチを実行する必要があるアプリケーションを作成しています。現在のように、マッパーの作成時にZend_Db_Tableオブジェクトをインスタンス化し、次にsetDefaultAdapterをスレーブに設定します。

これで、ベースマッパークラス内に、次のメソッドがあります。

これについては健全性チェックが必要です。オーバーヘッドはそれほど多くないと思います。もっと良い方法があるに違いないと思います。

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

ruby-on-rails - 関連付けによる Ruby Datamapper テーブルの継承

私はDatamapperの学習を始めましたが、気に入った点は、実際の継承を使用してモデルを記述できることです。

今、これについてもっと進歩することが可能かどうか疑問に思います:

そのコードは と の:title列を作成できませんTalk。明らかに、識別子の列はここではほとんど価値がありません。データベース ビューからは、 と の両方に別々のテーブルが必要だからTalkですMeeting

したがって、最終的には、で定義されているものと同じプロパティを共有したいTalkと考えていますが、可能性のある追加のプロパティと 0..1:n の関係 (会議には複数のトークがありますが、会議なしのトークがあります) があります。列の定義を繰り返したり、継承を放棄したりせずにこれを達成する方法はありますか?MeetingEvent

編集

別の例を挙げると、継承について私が気に入っている部分は、一般的なEvents を個別に照会できることです。したがって、特定の日付に何かがあるかどうかを知りたい場合:begin、2 つ以上のテーブルを調べる必要はなく、テーブルをクエリするだけで済みますEvent。ある意味で、次の構造は私のニーズに合う可能性があります。

ただし、これを使用するには、Eventを作成または編集するたびに手動で作成する必要がありTalkます。つまり、私はできませtalk.beginTalk.create(:begin => Time.now)。すべての関数にパッチを適用してプロパティをマージせずにこれを回避する方法はありますか? モデルを使用するときに、基礎となる構造を思い出したくありません。

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

ruby-on-rails - Vim と Rails Datamapper によるオートコンプリート

データベースからモデルをロードした後、Vim でオートコンプリートを行う方法はありますか? たとえば、タイプ bar のインスタンス メソッドを持つタイプ Foo のモデルがあり、次のようにするとします。

可能なオートコンプリート値としてバーを表示する必要があります。動的言語でこれを達成するのはやや難しいと思います。おそらく、データマッパーの規則に注意する必要があります。

多分私は間違ったアプローチを取っているので、コーディングするより簡単な方法があるので、オートコンプリートを使用することを考えるべきではありませんか?

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

c# - SQL テーブルからのカスタム データの読み取り

ユーザーがカスタム列をテーブルに追加できるようにするアプリケーションがあります (最善のアイデアではないかもしれませんが、それがその方法です)。

現在、データアクセス レイヤーを (再) 設計しており (以前は実際にはありませんでした)、SQL データベースをクエリするときに、データマッパーでパラメーター化されたクエリを使用します (以前は、SQL 文字列を連結し、すべてをエスケープしました)。入力)。

現在、これらのレコードのクエリ、作成、および更新の両方を行うために、カスタム列を処理する最善の方法を決定しようとしています。カスタム属性は「ビジネス オブジェクト」のディクショナリに格納されるので、次のようにすることを考えていました。

データのクエリ

  • SELECT * を使用してすべての列を取得し、プロパティを入力して、残り (カスタム データ) をビジネス オブジェクトのディクショナリに格納します。

作成/更新

  • テーブル内のすべての列を繰り返します (次のようなものです: SELECT COLUMN_NAME FROM information_schema.columns WHERE TABLE_NAME = 'TableName'
  • ディクショナリとテーブルの両方に存在する列を確認し、ディクショナリの値を変数として SQLCommand に追加することにより、SQL 文字列を (パラメータ化された変数名で) 生成します。

または、パラメータ化されたクエリを使用しながら、より良いアプローチはありますか?

0 投票する
2 に答える
1298 参照

ruby - DataMapperのdo_sqlite3のインストールに問題があります

ヘッダーファイルと同様にsqlite3-rubyをインストールしましたが、何らかの理由でsqlite3_open()をチェックすると失敗します

0 投票する
2 に答える
2054 参照

ruby - DataMapperでモデルの指定されたフィールドのみを取得する方法は?

特定のコンテキストでモデルの必要なフィールドのみを取得する方法が見つかりません。約 30 のフィールド (プロパティ) を持つ巨大なモデルがあるとします。しかし、検索目的のために、私はそれらのうちのいくつかだけが必要です.

例:

したがって、フロントエンド (Web アプリケーション) では、そのフィールドのほとんどが使用されます。しかし、検索の場合は、:title、:city、:state だけを言う必要があります。そのようなデータのクエリは簡単です

そして、取得したデータを JSON にパックする必要があります。私の知る限り、すべての操作を処理する dm-serialize と呼ばれる DataMapper のモジュールがあります。

最後に、出力用のパッケージを作成します。

しかし、出力項目にはすべてのフィールドがありますが、それらの一部のみを取得する必要があります。何らかの理由で遅延読み込みが機能しません。

問題は、選択するモデル フィールドをどのように指定するかということです。

0 投票する
5 に答える
3216 参照

php - 通常、データ マッパーはどのように見えますか?

というテーブルとCatという PHP クラスがありCatます。CatDataMapper今、私はクラスを作りたいので、 Cat extends CatDataMapper.

Data Mapper クラスで、ORM を実行したり、Cat を作成、編集、削除したりするための基本的な機能を提供したいと考えています。

そのために、このパターンをよく知っている誰かが私に役立つアドバイスをくれるでしょうか?update()、delete()、save() などの関数を提供するだけでは少し単純すぎると思います。

Data Mapper にはこの問題があることに気付きました: まず、Cat のインスタンスを作成し、次に name、furColor、eyeColor、purrSound、meowSound、attendants などのすべての変数を初期化します。すべての設定が完了したら、save( ) CatDataMapper から継承された関数。これは単純なことでした ;) しかしここで、本当の問題: データベースに猫のクエリを実行すると、多くの猫のデータを含む単純で退屈な結果セットが返されます。

PDO には、Cat インスタンスを作成するための ORM 機能があります。私がそれを使用しているとしましょう。あるいは、連想配列を取る mapDataset() 関数があるとさえ言えます。しかし、データ セットから Cat オブジェクトを取得するとすぐに、冗長なデータができてしまいます。同時に、20 人のユーザーがデータベースから同じ猫のデータを取得し、猫のオブジェクトを編集することができます。つまり、猫の名前を変更して、それを保存します。彼ら全員が編集を保存すると、すべてが台無しになります。

うーん... わかりました、この質問を非常に短くするために、ここでの良い習慣は何ですか?

0 投票する
2 に答える
1268 参照

oop - Data Mapper: 私の解釈は正しいですか?

私は今、Data Mapper パターンについて私が信じていることを確認しようとしています。だからここに行きます:

セクション A: データ マッパーは、別のクラスのオブジェクトを作成、更新、および削除するために使用されるクラスです。例: というクラスとCatというデータ マッパーCatDataMapper。と呼ばれるデータベーステーブルcats。ただし、 と呼ばれる xml ファイルcats.xml、または と呼ばれるハードコードされた配列である可能性もありますcats。その Data Mapper の要点は、Cat クラスを使用するビジネス ロジックを、「既存の猫を取得する方法」、または「猫を救う方法」、「猫をどこで救うか」について考えることから解放することです。Data Mapper のユーザーには、getCat(int id)、saveCat(Cat catObject)、deleteCat(Cat catObject) などの明確に定義されたメソッドを備えたブラックボックスのように見えます。

セクション B: 最初に、Cat が CatDataMapper を継承するのが賢明だと思いました。そのような関数を呼び出すと、少し便利になるからです。たとえば、catWithId(int id) のようなメソッドは静的 (クラス メソッド) であり、どこからのデータでも初期化された Cat のインスタンスを返すことができます。また、コード内で猫オブジェクトを操作する場合、myCat->save(); を呼び出すだけで済みます。Data Mapper が保存する場所に保存します (どこにどのように保存するかは気にしません。Data Mapper はこの複雑さをユーザーから隠します)。

結論として、私は今少し混乱しています ;)セクション Aは Data Mapper パターンに有効だと思いますか? また、セクション Bで説明されているように追加で行うとしたら、それは悪いことでしょうか? なんで?