問題タブ [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 - 関連するモデルを配列でフィルタリングする CakePHP
私はモデルを持っています: Project=>Keyword
HMBTM 関係を使用 (両方のモデルで設定)。
キーワード テーブルはツリーとして機能します。キーワードは、それらの間で階層関係を持っています。
収容可能な動作を使用しています。
ユーザーがキーワードを選択します。
返されるレコード (プロジェクト) を、選択したキーワード、またはそのキーワードの子によって制限したいと考えています。インデックス アクションを再利用しようとしています。キーワードが選択されていない場合は、標準のインデックス ビューをレンダリングし、キーワードが選択されている場合は、すべての子キーワードを検索し、返されたプロジェクトをいずれかのキーワード ID を持つプロジェクトにフィルターします。
子 (および元の) キーワード ID の配列を作成しようとしましたが、その配列を検索アクションのフィルタリングにする方法がわかりません。
私は使用してみました:
$childkeywords は、array_push を使用して作成された、関連する ID の配列です。ただし、これはキーと値のペアを使用せず、各 ID の int 値のみを使用します。そのため、適切に構成されていないと思います。
とても簡単なことをしたいのですが、解決策から遠ざかっています。レコードを関連付けられたモデルの ID のコレクションに制限する標準的な方法はありませんか?
乾杯
パウロの助けを借りて、私は今持っています:
しかし、タイプ inner を使用しても結果は変わりません..
cakephp - CakePHP で Containable に条件を追加する
以前は再帰に頼っていましたが、いくつかの解決策が得られませんでした.Containableがこれらに対してうまく機能することがわかりました.
私は映画レビューのウェブサイトを開発しています。その中で、特定のジャンルに関連する映画のリストを表示する必要があります。
以下のコードがあります。
本当の問題はここから始まります。ジャンル「ドラマ」に関係なくても、すべての映画を取得します。どこが間違っていますか?
データベーステーブルについて説明しましょう。
表: 映画
表:ジャンル
表: movie_genres
ここでは、1 つの movie_id に複数のgenre_id があることがわかります。のみを取得する必要がありますmov1
が、両方の映画を配列で取得しています。
~~編集~~ おっと!! 申し訳ありませんが、私はこのコードを で使用していますMoviesController
。3つのテーブルすべてにそれぞれのコントローラーがあります。ですから、どのコントローラーで使用できるか教えてください。
編集:2
モデル:ジャンル
モデル: 映画のジャンル
cakephp - CakePHP で「contain」クエリを最小限に抑えるにはどうすればよいですか?
Users、Comments、Pagesの3 つのモデルがあります。
ユーザー には多数の コメントがあり、コメントは ページに属し ます。
すべてのモデルがこのcontainable
動作を使用し、デフォルトはrecursive -1
です。
Pageモデルのフィールドを含む contentリクエストを使用してCommentsでfind()
クエリを呼び出すと、単一のクエリを使用して結果が正しく返され、自動的にPageテーブルがユーザーに結合されます。
Userモデル ( CommentとComment.Pageを含む )から同様のクエリを呼び出すと、結果は Comments をソースとするクエリであり、その後に関連するPageをソースするコメントごとのクエリが続きます。
JOIN の最適化を維持するためにモデルを構成する方法はありますか? 関連モデル ( Comments )での belongsTo 宣言は、ホスト モデル ( Users ) まで続くと想定しました。
アップデート
明確にする必要がありますが、私の質問は、実際のケーススタディの簡略化されたバージョンを使用していました。私が必要とする最小限の解決策には、この初期のモデル hasMany モデルの 属している モデル構造が含まれますが、チェーンの下流にある 1 つ以上の追加の属している モデルでの解決策も探しています (これは、LEFT JOIN を自動的に使用します。これは次のようになります)。実行可能)。
php - CakePHP Containable の動作が期待どおりに機能しない
2 レベルの深さのモデルから特定のフィールドを取得しようとしています。コンテナーの動作を使用していますが、最下層が正しく取得されていません。
コードは次のとおりです。
そして、それが返す配列:
ただし、ビジネス タイプ ID を提供するのではなく、BusinessType url フィールドを返したいと考えています。
どこが間違っているのか誰にもわかりますか?これはCakePHPのドキュメントと一致していると確信しています。
cakephp - CakePHP の変換動作が Containable で機能しない
私は CakePHP の Translate Behavior を実装し、すべてがかなりスムーズに進みましたが、翻訳されるはずのモデルを作成しi18n
たときに、テーブルから翻訳されたデータが存在しないことに気付きました。contain()
含まれているモデルに対して変換動作は機能しませんか? もしそうなら、それはこの動作の有用性をほぼ完全に削除しませんか? (あるいは、それは私だけかもしれませんが、ほぼすべてに Containable を使用しています)。
Containable を頻繁に使用する予定がある場合、翻訳をかなり簡単に行う別の「CakePHP 方式」はありますか?
cakephp - 収容可能な「contain」プロパティがリセットされない
次のコードでは、CakePHP 2.1.2 で期待どおりに Containable が動作していません。
コントローラーから関数を呼び出すと、予期しない結果が得られます。test1()
予想される配列を示します。test2()
からの同じ配列を示しますtest1
。実行すると、期待どおりの結果が得られます (大きな配列、test2()
次にtest1()
小さな配列)。
各関数で動作を動的にロードする代わりにモデルで使用しようとしactAs
ましたが、それは役に立ちませんでした。
簡単なものが欠けている場合は申し訳ありません。前もって感謝します!
cakephp - CakePHPの包含可能な動作が起動しない
Cakeとその包含可能な動作を初めて使用しましたが、期待どおりに機能していません...またはまったく機能していません。
製品のアクセサリのリストを取得しようとしています。製品モデルHABTM製品(別名「ProductRelation」)。結合テーブルは、product_idとrelated_idの2つの製品IDを持つproducts_productsです。これに反して、特定のproduct_idのアクセサリ(related_id列から駆動される製品)のリストを取得したい
私の製品モデルでは、$ actsAs = array('Containable');を追加しました。
そして、私のコントローラーでは、クックブックからの参照を使用して封じ込め可能なものを簡単にテストしても、条件がなくても製品をまったく封じ込めることができません。
..データベース内のすべての製品の配列を、関連するすべてのモデル(画像、コンテンツタブ、評価、レビュー、価格設定など)とともに返します。これに対して「条件」を適用しようとしたことはありません。これは、記述された呼び出しによってデータが制限されるためです。クックブックによると、製品とそのProductRelationデータ..。
任意のヒント?
cakephp - HABTMに含まれるCakePHP
私が抱えている問題を説明するために、例を使用します。学生が1つ以上の放課後コースに申し込むことができるシステムを構築しているとしましょう。しかし、それが有効であるためには、学校関係者が申し込みを承認する必要があります。だから私はこれらのモデルを持っています:
- コース(「Teacher」に属し、hasAndBelongsToMany「Student」)
- 学生(hasAndBelongsToMany「コース」)
- 先生(hasMany "Course")
ここで、9年生向けの未承認のサインアップすべてのリストを見たいとしましょう。簡単だ:
私が苦労しているのは、教師のデータ(IDだけではない)も取得することです。私はこれを試しました:
ただし、返される配列には何の影響もありません。これを既存のCakePHPプロジェクトに簡単に投入して操作できるようにするために、データベーススキーマとデータを次に示し、既存のCakePHPプロジェクトのランダムアクションに貼り付けることができるものを示します。これは私が取得しようとしているものです(教師のデータがそこにあることに注意してください):
ありがとう!
cakephp - CakePHP 2.2.4に第4レベルの関連付けのデータを含めて返すにはどうすればよいですか?
1つのクエリで返そうとしている4つのモデル(Location-> StatisticsCategory-> StatisticsItem-> Statistics)があります。クエリがLocationのレベルで開始されるまで、結果は期待どおりです。その時点で、データの戻り値にはStatisticItemの3番目の関連付けまでのすべてが含まれますが、すべてのStatisticはnullです。第4レベルの関連付け(少なくともここでは)がデータを返さない理由はありますか?
以下は、AppModelでContainable動作がオンになっているStatisticsControllerで使用しているコードです。
php - CakePHP の paginate と包含可能な動作で複雑な条件を作成する
複数のテーブルを調べるために、containable 動作を使用しています。
これは期待どおりに機能します。ただし、これをjQueryデータテーブルと統合しており、dataTablesが条件を渡す方法はフィールドを指定しません。だから私はcontainsの外で条件をやりたいと思っています...
もちろん、containable 動作では、contain 配列の tables キーの下に条件を含める必要があるため、これは不可能です。これはイライラします。誰かがこの問題の解決策または回避策を持っていますか?
CakePHP 2.x を使用しています