問題タブ [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 に答える
865 参照

codeigniter - カスタム モデル リレーション

codeigniter DataMapperの外部キーや主キーフィールドなどのカスタムまたはデフォルトのモデル関係構成を設定またはオーバーライドする方法は? ありがとう

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

php - DataMapper ORM コレクション オブジェクトではなく配列として取得する

CodeIgniter プロジェクトでDataMapper ORMを使用しています。

私が抱えている問題は、次のコードを使用する場合です。

$o、配列ではなく DataMapper ORM コレクション オブジェクトになります。

コレクションをループするために引き続き使用できることはわかっていますforeachが、他の PHP 配列関数 ( array_pop、などarray_splice) はまだ使用できません。

配列として返すために DataMapper ORM によって提供される関数があるかどうかを知りたいです。

皆様、どうもありがとうございました。

0 投票する
4 に答える
1450 参照

php - CodeIgniter DataMapper ORM は、適用する検証ルールのセットをどのように認識しますか?

CodeIgniter DataMapper ORM を使用していますが、よくわからないことがあります。

この例、http://datamapper.wanwizard.eu/pages/examples/login.html$validationでは、 User モデル クラスで定義されたいくつかのルールがあることがわかります。

関数内ではlogin、 を呼び出していることもわかります$this->validate()->get()。関数が実行されると、のすべてのルールvalidationに対してチェックする必要があります。$validation

私が理解できないのは、ログインのユースケースでは、ユーザー名とパスワードのみを検証する必要があるということですが、この例では、このユースケースとは関係のない他の検証ルールがあることがわかります。具体的には、 でconfirm_password定義されたルールが$validationあり、このルールは明らかに、ログインのユース ケースではなく、更新のユース ケースのみを対象としています。

この例では、これらの無関係なルールをバイパスするコードが見当たらないので、DataMapper ORM はこれらの無関係なルールがlogin関数内でバイパスされる可能性があることを実際にどのように認識しているのでしょうか?

皆様、どうもありがとうございました。

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

php - CodeIgniter DataMapperORMv1.8.0-複数のテーブルからレコードを取得する方法

私はこれに不慣れで、少し助けが必要です。私は2つのテーブルを持っています...

ご覧のとおり、すべてのドライバーは自分に関連付けられた車を持っています。オブジェクト内で彼に関連付けられているすべてのドライバーとすべての車をクエリするにはどうすればよいですか。

これを使用してすべてのドライバーを取得できます。

ドライバーの私のモデルでは

$data['driver']のすべてのレコードを取得したい

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

php - ORM を使用してネストされた関係を作成し、クエリを最小限に抑える

編集 3

ボートロードを読んだ後、一般的に、ORMやシステムでは、使用しているクエリの数を減らして、組織化されたオブジェクトの関係を構築できるとは本当に思いません。それが可能であるという例を提供できる人がいるなら、私はあなたにキスします.

編集 2ネストされた for ループは、実行中の最良のソリューションだと思います

単純なプロジェクトにデータを入力するには、おそらく 200 ~ 500 のクエリを実行することになるため、より良い例が欲しいと思います。これは悪いです。

編集 2

さて、私はこれでしばらく遊んでいて、いくつかの結果が得られていますが、それらが「正しい」方法であるとは思いません。それは私にとって非常に重要です. 私がしていることは、where_relatedメソッドを使用して適切なオブジェクトを取得することですが、クエリ数はまだかなり多いと思います.ORMの方がうまくいくことがわかっています. where 関連を使用して適切な階層を作成する場合、ネストされたforeachループを使用する必要があり、それが気に入りません。つまり、無駄なクエリです。

これが私が思いついた解決策です

これにより、適切な階層構造が出力されます。ご覧のとおり、エコーをオブジェクト/配列の人口に置き換えるのは簡単です。

私がむしろ持っているのは、可能であれば同じことを行う1つの連鎖コマンドであり、スコープも問題ではありません。

より似ているいくつかのチェーン

もちろん、ネストされた foreach ループと同じ結果に近い結果は得られませんが、知りたいのは、関係を連鎖させ、ネストされた foreach なしでオブジェクトを設定できることです。

そのため、プロファイリングを行ったところ、ネストされた foreach ループが小さなプロジェクトで 63 のクエリを生成し、結果を生成するのにほぼ 0.5 秒かかりました。これは本当に遅すぎます。より良いクエリが必要です。

__________編集 1

以下の情報はすべて素晴らしいですが、私はそれで遊んでいて、3 層の関係はもちろんのこと、関係がうまくいかないようです。私は考えてドキュメントを読むことができるほとんどすべてを試しましたが、何らかの理由で私の脳はORMが好きではありません.

slidesのすべてのIDをエコーし​​たいだけprojectです。私が無駄に試したことのリストを提供します。私のモデル構造は以下と同じです。メソッドを追加しているだけです。

そして、スライド法で論理的に反対だと思うことを試してみました.

何が間違っているのですか... ORM関係をどのように構築していますか?


元の質問

初めて ORM を使用していますが、コードを構造化して関係からデータを取得する方法を視覚化するのに大きな問題があります。

CodeIgniterで ORM としてDataMapperを使用しています。インストールは問題なく機能しており、すべてのドキュメントを読みましたが、コントローラーで情報を取得する方法がわかりません

モデル -

プロジェクト.php

スライド.php

shape.php

point.php

上記は、プロジェクト - >スライド - >シェイプ - >ポイント間に下降する1->多関係を作成する必要があります

情報をどのように扱い始めますか?ORM を使用していないときは、モデルですべてのデータ処理を処理しましたが、これは ORM モデルでは正しくありませんか? プロジェクト 1 のすべての形状のすべてのポイントを取得したいとします。そのような呼び出しをどのように構造化しますか?

必要に応じて、特定のコードは必要ありません。私が本当に必要としているのは、オブジェクトを階層化する方法を視覚化して、任意の階層でそれぞれを処理できるようにする方法についてのアイデアです。

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

php - フィールド名をマッピングするためのPHP用DataMapper ORMの使用

CodeIgniter で DataMapper ORM を使用することを検討していますが、データベース構造が適切に形成されていないシナリオがあります。

データベースのフィールド名をより論理的なものにマップするようにモデルを構成できるようにしたいと考えています。次に、データベース構造の更新に取り掛かると、モデルを更新するだけで、すべての参照コードは引き続き機能します。

これは DataMapper ORM で可能ですか?

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

php - CodeIgniter DataMapper ORMの独自のテーブルにない列でグループ化するにはどうすればよいですか?

DataMapper ORMを使用しており、次のテーブルがあります。

私がやりたいのは、チャネルプロバイダー名とチャネル名を含むsales_recordsテーブルのすべての行を表示しますが、 channel_providersテーブルの名前列でグループ化します。

現在、私は次のコードを持っています:

このページのgroup_byの例から:http: //datamapper.wanwizard.eu/pages/get.html

group_byオブジェクトが関連付けられているテーブルに存在する列で関数を使用できることはわかっています。しかし、私の場合、 group_byを使用したい列はそれ自体のテーブルにありませんが、これはどのように行うことができますか?

みなさん、ありがとうございました。

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

php - CodeigniterRelationsのDataMapperORM

私はテーブルを持っています...

idToおよびFromは、ユーザーテーブルの主キーです。

CodeIgniter DataMapperで各メッセージを取得するときに、ユーザーの詳細を取得するにはどうすればよいですか。

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

php - CodeIgniter DataMapper 関係の問題

ねえ、私は Datamapper モデルで非常に単純な関係を持っています..

私のモデルチケットで私は持っています:

そして私がしようとすると

それは言います:

DataMapper エラー: 'ticket' はユーザーの有効な親関係ではありません。関係は正しく構成されていますか?

問題がわかりません:/

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

php - Datamapper ORM のループでオブジェクトを変更する

Codeigniter の Datamapper で長い形式を保存しようとしています。このような値を渡すと、フォームを保存できます

今私がsaveメソッドを呼び出すと、それは動作します

フォームが大きいので foreach にオブジェクトの値を追加してみました

ただし、呼び出して $t->save()も機能しません。