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

php - Codeigniter で datamapper ORM を使用して、同じオブジェクトに対して多対 1 および多対多

以下を必要とするアプリケーションがあります。

ユーザーは多くのプロジェクトを所有しています。プロジェクトの所有者は 1 人です。

ユーザーは多くのプロジェクトに取り組んでいます。プロジェクトには多くのユーザーがいます。

したがって、users、projects_users、projects の 3 つのテーブルがあります。関係は次のとおりです。

1 人のユーザー (所有者) --- 多くのプロジェクト (created_by)

多くのユーザー (id) ---- projects_users (user_id, project_id) 経由 ---- 多くのプロジェクト (id)。

Codeigniter では、datamapper モデルで次の関係を設定しました。

と...

ただし、これは機能していないようで、再帰エラーが発生します。この関係をデータマッパーで表現する正しい方法は何ですか?

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

php - CodeigniterのDatamapper ORMでWHEREパラメータをネストする方法は?

Codeigniter に Datamapper ORM を使用して、特定のクエリに問題があります。私のデータ モデルは、それぞれが多くのカテゴリ、ユーザー、およびタグを持つブログ投稿を持つように設定されています。特定のカテゴリ、ユーザー、またはタグに関連しているが 、ステータスが「公開済み」または「スケジュール済み」のブログ投稿を取得したい。

つまり、私が達成したいことは次のとおりです。 category = General AND (status = published OR status = scheduled)

Datamapper ORM で、次の構文を試しました (「一般」という名前のカテゴリにある投稿が必要であると仮定します)。

ただし、これにより次の投稿が取得されます(status = published AND category = General) OR status = scheduled。ステートメントの順序を変更しても役に立ちません。OR条件を括弧でネストするためのDatamapper構文があるかどうかわからないようです。

次のような生の SQL でクエリを記述できることに気付きました。

SELECT * FROM posts WHERE (status = "published" OR status = "scheduled) AND ...

...さらに複雑な JOIN ステートメントが続きますが、私が Datamapper を使用しているすべての理由は、リレーションシップの操作を容易にするためです。または条件付き!また、サブクエリを使用できることも認識していますが、繰り返しますが、それほど複雑であるべきではないと思います。

足りないものはありますか?Datamapper の構文を使用してこのクエリを実行できるように、このクエリを整理する方法はありますか? AND/OR文の演算順序を指定できるようにするには、どうにか組み込みたい...

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

codeigniter - codeigniterデータマッパー

CodeIgniter2.1.0とMySQLを使用しています。水平方向のデータ行を垂直方向のデータ行として表示したい。データベースから単一の行をフェッチしてエコーすると、次のようになります。

上記のテーブルを生成するためにCodeIgnitersテーブルライブラリを使用しました。これの代わりに、私はそれがこのように表示されることを望みます:

CodeIgniter 2.1.0でこれを行うにはどうすればよいですか?

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

codeigniter - ORMまたはDataMapperシステムを使用しない、モデル間のCodeIgniter依存関係

私はCodeIgniterを使用してCRUDシステムを作成しており、あるモデルから別のモデルにメソッドを呼び出すことで、モデル間に「1対多」の依存関係を実装しています(ORMまたはDataMapperシステムを使用していません)。

たとえば、「ユーザーあたりのドキュメント数が多い」という認識では、ユーザーを削除するときに、User_ModelはDocument_Modelのdelete()メソッドを直接呼び出し、それに関連付けられているドキュメントをすべて削除します。

「1対多」のモデル関係(ORMなどなし)を実装するためのより良い方法があると確信しており、いくつかのガイダンスをいただければ幸いです。

ありがとう

アロン。

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

codeigniter - DataMapper ORM および CodeIgniter でモデルがデータベースに保存される前に関数を実行する

CodeIgniter で Datamapper ORM を使用してモデルを保存する前に、関数/コールバックを実行する方法はありますか?

これは、before_update、before_create などの特定のポイントにフックできるほとんどの ORM で可能であることを知っています。基本的に、before_update にフックして、テーブル行のコピーを変更前に別のログ テーブルに保存したいと考えています。私は現在コントローラーでこれを行っていますが、より良い MVC プラクティスとしてモデルに移動したいと考えています。

コードまたはドキュメントへのリンクを提供してください。前もって感謝します。

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

php - codeigniter datamapperで重複データを回避!? PHP

Food(テーブル)キー/エントリをDBに挿入していますが、マニュアルに基づいているとは思われませんが、重複したキーを取得しています。私は本当に混乱して立ち往生している!? 関係は次のとおりです。すべてのユーザーは、さまざまな種類の食品に関連しています。その後、ユーザーの $data['food'] agin を読み取るたびに...重複するエントリが作成されます。次回ユーザーがログインしたときに、食べ物が出ていることを知る代わりに、ということです。それは主キーをインクリメントし、キーがそれを知るのに十分スマートであるとマニュアルが示唆するものに反してキーが終了することを理解していません...だから私の問題は、すべてのエントリのコピーを1つだけにしたいのですが、より多くのエントリになってしまうことです. エントリが重複しないようにするにはどうすればよいですか?

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

codeigniter - codeigniter データマッパー関係の検証の問題

特定のオブジェクトの関連アイテムを検証するための検証ルールを設定する必要があります。つまり、ユーザーはそれに関連する製品を 3 つまで持つことができます。

DataMapper は _related_max_size ルールを使用してこの検証をチェックできると思いますが、モデルの $validation 配列でそれを使用する方法がわかりません。

これまでのところ、ユーザー モデルと製品モデルの両方でこれを試しました。

モデル、コントローラー、そして最後にビューでこれを設定する方法の例を誰かに見せてもらえますか?

編集:私が言いたいのは、ユーザーは多くの製品を持っており、一定量の製品を作成できるということです.3つの製品としましょう。その量に達すると、ユーザーは製品を作成できなくなり、この検証ルールはユーザーを許可するべきではありませんより多くの製品を作成するために。

これは DB スキーマになります。

詳細はこちら: http://codeigniter.com/forums/viewthread/178045/P500/

ありがとう!

編集:

わかりました、すべてが機能するようになりました…ただし、次のことを行う必要があります。

$products_limit は、ユーザーが関連付けた「プラン」から取得され、ユーザーがログインしたときにセッションに保存されます。これを実行しようとすると、次のようになります。

この設定を動的にする方法はありますか?

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

mysql - CodeIgniterDatamapperで高度なクエリを使用して重複レコードを検索する

DBからすべての重複行を取得しようとしています。entriesと呼ばれる主キーidantVARCHAR列を持つテーブルがあるとしましょうname。私はすでにSQLクエリを実行しています:

個人的な興味と他のコードとの一貫性のために、CodeIgniterDatamapperlibを使用して同様のクエリを作成したいと思います。

サブクエリ部分を作成しましたが、期待どおりに機能しています。

INNER JOIN ... ON ...しかし、サブクエリを親クエリ(一部)に統合する方法がわかりません。

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

php - CodeIgniter DataMapper ORM include_related 常にデータベース テーブルの最初の行を返す

ユーザー モデルと user_profile モデルがあり、特定のユーザーと関連する user_profile を次の関数で取得しようとしています。include_related 行をコメントアウトすると機能し、user_id に基づいてユーザーを取得しますが、include_related を使用してユーザー プロファイル フィールドを取得しようとすると、user_id に基づくユーザーではなく、データベースの最初のユーザーを返すだけです。ここで何がうまくいかないのですか?

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

codeigniter - DatamapperORMで新しく保存された関連オブジェクトにアクセスする方法

CodeIgniter2.1.0でDatamapperORM1.8.2.1を使用していますが、親内から新しく追加された関連オブジェクトにアクセスできません。

私はこのような親クラスを持っています:

そしてこのような子クラス:

ユーザーコードで、この親をインスタンス化し、いくつかの子オブジェクトを追加します。

追加された子オブジェクトの直後にカウントすると、0になります。

...データベーステーブルを見ると、親レコードが追加されているのに対し、すべての子レコードが追加されており、それらは親レコードと正しく関連付けられています。

ちなみに、この回避策を試してみると、正しい数の子行が表示されます。

では、上記の私のコードの何が問題になっているのでしょうか?