問題タブ [containable]
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.
cakephp - Containable 条件を使用したページ付けは、hasOne では機能しますが、hasMany では機能しません
たとえば、私はこの関係を持っています:
また、Contact をページ付けする必要があるため、Containable を使用します。
Info.name と Response.description による検索を追加したいと考えています。Info.nameには最適ですが、 Response.descriptionを使用しようとすると、列が存在しないというエラーがスローされます。
さらに、リレーションシップを Contact hasOne Response に変更しようとしたところ、正しくフィルター処理されましたが、最初の応答のみが返され、これは正しいリレーションシップではありません。
たとえば、検索キー$filterがある場合、一致するInfo.nameまたは少なくとも 1 つの一致するResponse.descriptionを持つ連絡先のみを返したいとします。
cakephp - CakePHP-1つのモデルからの結果を関連するモデルの条件が一致するものに制限する
CakePHPを使い始めたばかりで、取得した結果を、関連付けられたモデルのフィールドが特定の値と一致する結果に制限するのに問題が発生しています。私はここや他の場所で多くの関連する質問を見つけましたが、それらは私のシナリオよりも複雑または単純な状況を扱っているようですので、ここに行きます:
私が興味を持っている2つのモデルがあります。それは、 HABTM関係によって関連付けられているImageとCollectionです。関係は、結合テーブルcollections_imagesを介してImage.phpとCollection.phpで正しく設定されており、一般的にデータの書き込みや取得に問題はありませんでした。ContainableもImageモデルで適切に設定されています。
私がやりたいのは、$ this-> Imageでfind()を実行し、タイトルが$collectionである特定のコレクションに属するものだけを返すことです。私はこれをいくつかの異なる方法で試しました:
このため、次のエラーが発生します。
エラー:SQLSTATE [42S22]:列が見つかりません:1054不明な列'Collection.title'が'where句'にあります
関連するモデルを介して検索条件を直接確立することはできないようです。そこで、私は戻って、次のように包含を制限しようとしました。
今回は結果が出ましたが、適切なコレクションに属していない画像が含まれています。これは、pr()が$ collection="Urban"に対して提供する簡略化されたスニペットです。
ご覧のとおり、コレクションのタイトルが$ collectionと一致しない画像のコレクションデータは省略されていますが、画像データは含まれています。
ここで何が欠けていますか?これらの2つのアプローチのいずれかを私が目指していることを実行させる方法はありますか?
記録のために、私はまた別の方向からそれについて行きました:
必要なデータだけを返します。ただし、返されるデータの配列構造により、コードの他の場所で問題が発生するため、最終的にはImageから直接ページ付けできるようにしたいと考えています。
みなさん、お時間を割いていただきありがとうございます。
編集:
さらに検索した後、私はここで許容できる解決策を見つけました:
http://cakebaker.42dh.com/2007/10/17/pagination-of-data-from-a-habtm-relationship/
これには、マッピングテーブル「CollectionsImage.php」のモデルを作成し、 ImageとCollectionの両方に対してhasOne関係を確立する必要がありました。次に、paginate()がCollectionsImageで実行されます。
これは少し回り道のようで、指定されたタイトルのコレクションのIDを見つけるために追加の手順が必要になるため、もっと直接的な解決策を知っている人がいるかどうかはまだ疑問です。
cakephp - CakePHP の包含可能なモデルは空であってはなりません
レコードのフィルタリングに問題があります。どのレコードにも空のモデルを含めたくありません。
出荷済みの orderstatustype_id LIKE 5 を選択するための Orderstatus テーブルの条件を確認しました。
出荷記録だけが必要ですが、次のようなすべての記録を取得します
出荷されたレコードのみをフィルタリングする必要があります..助けてください..
cakephp - 関連データに基づく CakePHP フィルタリングとページネーション
これが私のシナリオです:
- subfirms と subfirmdetails の 2 つのテーブルがあります。
- サブファームのページネーションを試みていますが、AUM (会社の総資金) などの特定の subfirmdetail 値に応じたフィルターを使用しています。
ここに私のページネーションコードがあります:
Subfirmdetail.value を 40 にしたいとしましょう。それ以外の場合は会社を表示しません。これは、私がフィルタリングしようとしているタイプのシナリオです (またはさらに深く...)。しばらく立ち往生しているので、助けていただければ幸いです!
cakephp - CakephpとContainableエラー
appModelに包含可能な動作があります。アセットモデルでこれを行うと:
次のエラーが発生します:致命的なエラー:非オブジェクトでのメンバー関数contain()の呼び出し
ただし、次のようにcontainを使用すると、正常に機能します。
何か案は?
cakephp - CakePHP の内容が Recursive で機能しない
私がしようとすると:
出力をまったく制限しません。関連するすべてのモデルを取得します。ただし、 と指定しないrecursive
場合2
、または と指定すると1
、モデルが欠落しComment=>Poster
ます。
必要なモデルだけを入手するにはどうすればよいですか? ありがとう!
cakephp - Cakephp は、グループごとに包含可能/リンク可能を検索します
Cakephp 2.1 アプリケーションのラベル、カテゴリ、製品に 3 つのモデルがあります。
製品は、hasOne 関係を通じてカテゴリとラベルに関連付けられています。
次のデータ構造を実現するために、containable または linkable を使用する最も効率的な方法は何ですか。
基本的に、製品をカテゴリごとにグループ化し、ラベルごとにカテゴリをグループ化します。
私が思いついた唯一の解決策は、製品を取得して afterFind スタイルのデータを変更することでした
次に、 foreach を使用して結果を繰り返し処理し、データ構造を再フォーマットして必要な結果を達成します。
cakephp - Cakephp 1.3.0 で深い包含関係が機能しない
私のモデルには次の関係があります
BasicIndexing belongsTo Applicant
申請者には多数のリクエストがあります
そのため、以下のコードに示すように、BasicIndexing モデルを取得し、申請者モデルと申請者の対応する要求を含めたいと考えています。
問題は、返される結果に$searchResult
Request モデルがまったく含まれていないことです。Applicant モデルのみが含まれ、Request モデルは無視されます。Applicant に関連付けられていないモデルを使用しようとすると、モデルが Applicant モデルに関連付けられていないという警告が表示されます。
何か間違ったことはありますか、それとも Cake 1.3.0 のリリースに問題がありますか?
どんな助けでも大歓迎です。
ありがとう。
cakephp - 関連付けられたモデルに含まれる CakePHP
と があるセットアップがありBooks
Users
ますLogs
。各ログにはブックとユーザーがあり、ユーザーに関係なくすべてのブックのリストを取得しようとしていますが、そのブックに関連付けられているログも取得します (再帰は 1 に設定されています)。現在ログインしているユーザー。
うまくいけば、それは明らかです。私は Containable を使ってみました。
$this->Book->contain('Log.user_id = 2');
しかし残念ながら、これはユーザー 2 がログを持っていない本を除外します。私はこれを正しく行っていて、containable を適切に使用していないだけなのか、それともすべて間違っているのでしょうか。
どんな助けでも大歓迎です