問題タブ [codeigniter-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 投票する
2 に答える
594 参照

codeigniter - Codeigniter Datamapper は新しい ID として保存します

私はデータマッパーが初めてです。結果を新しい ID に複製しようとすると問題が発生します。

これは私のデータベースの単純化されたテーブルです:

ジョブ テーブル

プロパティ テーブル


ジョブID 1に基づいて新しいジョブを新しいジョブ/プロパティIDに自動的に複製するにはどうすればよいですか

ジョブ テーブル

プロパティ テーブル

助けてくれてありがとう!:)

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

codeigniter - codeigniterとdatamapperを使用した結果セットのフィルタリング

datamapperで少し問題が発生しました。簡単な解決策があるかどうか知りたいのですが、この種のデータがあるとしましょう

グループテーブル

ベースコントローラーで、管理者ではないグループのみを表示するようにグローバルフィールドを設定しました

ここで、コントローラーでグループをフィルター処理したいと思います。たとえば、編集者とゲスト(idは1〜4)のみを選択したいとします。だから私は最初の結果セットをフィルタリングしたいと思います...このようなもの

しかし、それは機能しません。adminを含む4未満のすべてのグループIDを返します。これを取得する正しい方法は何でしょうか?

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

codeigniter - リレーションにあるテーブルからデータを取得する

CodeIgniter と DataMapper で簡単なブログを書いていますが、関係に問題があります。DattaMapper を使用して、特にタグで投稿を取得するにはどうすればよいですか。SQL クエリは次のようになります。

phpコード:

データベーススキーム:

ここに画像の説明を入力

助言がありますか?

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

codeigniter - DatamapperORMを使用してテーブルの関係を保存する

私はオブジェクトモデルマッピングに不慣れで、CodeIgniterDataMapperのドキュメントを読んだだけです。私は例を試してみましたが、多くのことを達成できる時間がどれほど短いかに非常に感銘を受けました。

しかし、私は1つの問題を解決していないようです:

顧客と住所の2つのテーブルがあるとします。顧客は多くの住所を持つことができますが、住所は1人の顧客のみです。

これで、新規顧客が顧客テーブルに保存されている個人データと住所テーブルに保存されている住所を入力する必要がある登録フォームがあります。

検証は特定のモデルで行われます。私の問題は、データベースに保存する前に、データが両方のテーブルで有効であることをどのように確認できるかです。

現時点では、顧客が検証してdbに保存されるcustomerテーブルに正しいデータを入力する可能性がありますが、アドレスデータは検証されず、保存されません。

つまり、すべてのテーブルのデータが検証された場合にのみ、任意のテーブルのデータをdbに保存したい。それ以外の場合は、エラーメッセージを取得したい。

よろしくお願いします。

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

codeigniter - CodeIgnitorのDataMapperORMでスーパータイプとサブタイプの関係を設定するにはどうすればよいですか?

私は、ユーザーがジャーナルエントリを記録できるオンラインフードジャーナルを運営しています。エントリには、食品エントリ、運動エントリ、測定値、および完了したタスクの4つのタイプがあります。エントリには、共通のいくつかの属性(たとえば、id、amount、unit_idなど)がありますが、タイプ固有の属性(たとえば、food_id、exercise_idなど)もあります。これは、スーパータイプとサブタイプの関係に最適な候補です。

これが私のテーブルです(簡略化):

だから私の質問は、CodeIgniterのDataMapper ORMを使用してスーパータイプとサブタイプの関係を設定するにはどうすればよいですか?ユーザーガイドの「関係」セクションと「高度な関係」セクションを見ましたが、何も見つかりません。

DataMapperでそれが不可能な場合は、いくつかの解決策を考えることができます。

  1. サブタイプ属性をロールアップします(1つの大きなテーブル、ugh)
  2. スーパータイプの属性をロールダウンします(4つの別々のテーブル、ugh)
  3. 核になり、Doctrine 2.0 ORMを使用します(YAML構成ファイル、うーん!)
  4. ネイティブORMがテーブル継承をサポートする別のフレームワークを使用します(CodeIgniterでKohanaとFuelPHPを候補リストに追加しました)。
  5. スーパータイプとサブタイプの関係を手動でコーディングします(そもそもORMの目的を無効にします)。

私は自分の選択肢のどれにもわくわくしていません。オプション1と2は、独自の頭痛の種になります(この記事の下部を参照)。オプション3は、ハンマーを使った手術のようです。フレームワークコードを書き始めていないので、オプション4を使用できます(CIとKohanaの間で非常に難しい選択でした)。オプション5は私が今いるところです。

助言がありますか?助けてくれてありがとう!

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

php - CodeIgniter Join Fieldsヘルプ?

結合フィールドを含むCodeIgniterDatamapperORMクエリの作成についてサポートが必要です。私は商人のテーブルとベンダーのテーブルを持っています。彼らは多対1の関係を持っています。つまり、多くの商人は単一のベンダーの一部です。

したがって、DatamapperORM規則に従った私の日付ベーステーブルは次のとおりです。

商人

ベンダー

Merchants_vendors

さらに、merchants_vendorsテーブルには、結合フィールド「role」と「admin」があります。明らかに、このデータは結合テーブルに配置する必要があります。Merchantsテーブルに配置した場合、ベンダーごとに役割と管理者を定義することはできません。

最後に、マーチャントは1対1の関係でユーザーと関係があります。マーチャントはユーザーの単なる拡張と考えてください。

このデータ構造に従うデータからPHP配列を作成しようとしていますが、ロールフィールドと管理フィールドが正しく入力されていないようです。簡単にするために、冗長な列を削除しました。

これが私が使用しているコードです-ベンダーIDを知っていると仮定します:

これにより、ロールと管理者がいない上記のPHPデータ構造に到達できます。 私はそのinclude_join_fields()機能をよく知っていますが、それを機能させることができないようです。具体的には、$m->vendor->include_join_fields();Thenを試してから役割/管理フィールドにアクセスしようとしまし$mV->vendor->join_role$mV->vendor->join_adminが、それは機能しません。

あなたの助けは大歓迎です!

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

codeigniter - CodeIgniter/Datamapper-1対多の関係を更新する

CodeIgniter/Datamapperとの1対多の関係の更新に問題があります。私の頭の中では、1対多の関係が更新されたときにという考えがありました。関係テーブル内の既存のレコードが削除され、新しい関係が追加されます。これは当てはまらないようです。

以下を使用して、毎回リレーションシップテーブルに新しいレコードを追加します。

作成された関係は正しいですが$banners、関係テーブルに含まれるオブジェクトのみが含まれ、履歴アイテムは含まれないことを期待していました。

これは正しい機能ですか?もしそうなら、この更新プロセスを機能させるための最良の方法は何ですか?

ありがとう

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

php - CodeigniterDataMapperORMの深い関係のためにオブジェクトがインスタンス化されない

この例から:

http://datamapper.wanwizard.eu/pages/getadvanced.html#Deep.Relationship.Include

あなたはそれが言うのを見ることができます:現時点では、深い関係は主張をサポートしていません。

したがって、グループモデルでいくつかのメソッドが定義されている場合でも、フィールドデータを手動で収集し、グループオブジェクトを自分でインスタンス化しない限り、そのメソッドを使用することはできません。

なぜサポートされていないのか興味がありますが、これはORMで達成するのが非常に難しいことですか?

また、簡単な回避策があるかどうか、またはこの問題をどのように解決したかを知りたいと思います。

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

codeigniter - CI Datamapper でリレーション名を関連モデルから独立させるにはどうすればよいですか?

Datamapper でリレーションシップを設計する場合、リレーションシップを関連オブジェクトと同じ名前で呼ぶ必要がありますApplication_Model_User。クラス名のようなものがある場合、これはあまり便利ではありません。「クラス」キーを使用した構成オプションがあると急いで言う人のために、私は知っています。そこに行ってみました。関連するオブジェクトを取得する場合にのみ機能し、更新する場合には機能しません。

問題を再現するためのコード スニペットを次に示します。

このコードは、「usermodel を rolemodel と関連付けることができません」というメッセージを表示します。user_rolesエラーですが、リレーションの名前が「ロール」から「ロールモデル」に変更された場合、正しく機能します (結合テーブルに新しいレコードが挿入されることを意味します)。

したがって、CI の Datamapper の熱心なユーザーが助けになる場合は、関係を適切に定義する方法を教えてください。

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

php - Codeigniterにデータマッパーの関係を保存する

Datamapperから始めて、いくつかのエラーが発生しています。オブジェクト、関連オブジェクトを作成してから関係を保存すると、両方のオブジェクトも保存されると思いました。

実際、これが好きな場合、プロファイルは保存されません。そしてもちろん、関係ではありません。私がこのようなことをした場合:

両方とも保存されますが、プロファイルは完全に空です。パラメータは保存されませんが、idとDatamapperのデフォルト(作成および更新)

この動作は正しいですか、それとも何かが足りませんか?

ありがとう!