問題タブ [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 Containable: 深い関連性を持つ同じモデル
私はこれをかなり検索しましたが、それを何と呼ぶかさえ知りません。
簡略化されたバージョンでは、次のモデルがあります。
Person
(ID、名前) - hasMany:ArrivalDate
Country
(ID、名前) - hasMany:Person
ArrivalDate
(id、arrival_date、salesman_id) - 所属先:Person
,Salesman
(className =>Person
)
ご覧のとおり、到着日を指定した人々とセールスマンを 1 つのテーブルにまとめようとしています。
データを取得したら、containable 動作を使用して必要なモデルのみを取得します。
しかし、問題は次のとおりです。これにどのように「含める」のSalesman
ですか?
Salesman
の単なるエイリアスでありPerson
、モデルが含まれている場合はPerson
、親データを取得するだけです。エイリアス ( Salesman
) を含めようとすると、エラーが発生します。
cakephp - Fat モデル、Skinny Controller を含む CakePHP
かなり奇妙なシナリオで、CakePHP で Containable を使用しようとしています。
- グループ hasAndBelongsToMany ユーザー
- グループの属しているユーザー
- ユーザー hasAndBelongsToMany グループ
よくわかりませんが、クエリに何か問題があるか、Containable が自分の条件で参照しようとしている「ユーザー」を自動的に判断するのに苦労していると考えています。(部門には部門長がいて、グループはユーザーに属しています。部門は HABTM の従業員でもあり、その逆も同様です。したがって、2 つの HABTM リンクがあります。)
ユーザーコントローラー(ビュー用)から、ユーザーが属する部門(グループ)と部門のみを取得しようとしています。
ユーザーモデルでは:
これにより、必要なすべての情報を含むデータの配列が得られます。ただし、コントローラーを細く保ち、モデルを太くしたいので、取得している戻り値を排除したいと思います-ユーザーはデータで返されます。
返されたデータ:
Groups モデルで同様の名前のメソッドにアクセスしようとしましたが、うまくいきませんでした:
これにより、返されたデータからユーザー配列が削除されますが、結合テーブル (groups_users) が一致するかどうかに関係なく、すべての部門 (グループ) が返され、返されるデータと共に空のユーザー配列が返されます。
User モデルのメソッドからこのデータを単純に使用し、Set クラスを使用して不要なものを削除できることはわかっていますが、それはかなり非効率的です。私が探しているものを適切にクエリする Group モデルを取得する方法が必要ですよね?
-- 編集/更新 -- 私はある程度の進歩を遂げましたが、これほど長い間、他の利点もありました。
私は今findDepartment
、グループモデルから呼び出しています:
これにより、データを取り戻すために探していたものにはるかに近づきます。
残念ながら、belongsTo
ここで関連する User 関係を失いました。に配列の二次LEFT
結合を追加しようとしましたが、うまくいかないようです。このような結果を作成するために HABTM の結合を作成する方法がわかりません...joins
User
Containable
php - cakephp 動的仮想フィールドまたは格納可能な beforeFind コールバックを適用する
beforeFind()
現在のユーザーの ID をクエリに挿入する必要があるため、現在仮想フィールドをアタッチしています。関連モデルで find を呼び出し、このモデルを含むと、静的に定義された仮想フィールドが含まれますが、 . 内の仮想フィールドは含まれませんbeforeFind()
。モデルで直接 find を呼び出すと、動的にアタッチされた仮想フィールドが含まれます。
これが私の beforeFind コールバックです:
beforeFind に動的にアタッチされているため、クックブックcost_for_user
で提案されているように、実行時に仮想フィールドをコピーすることはできません。仮想フィールドを動的にアタッチするためのより良いコールバックはありますか?
cakephp - cakephpでcontainble動作を使用しますか?
カテゴリ、サブカテゴリ、サブサブカテゴリの 3 つのテーブルがあります。カテゴリ テーブルには id、name サブカテゴリ テーブルには id、category_id、name のフィールドが含まれ、サブサブカテゴリ テーブルには id、subcategory_id、name のフィールドが含まれます。
サブサブカテゴリ ビュー/インデックスで列が名前、subcategory_name として表示されるようになりましたが、サブサブカテゴリ インデックス ページにも category_name を表示したい
包含可能な動作を使用して、2 つのテーブルをカテゴリとサブサブカテゴリとして関連付けました
これが私のコードです:--
サブサブカテゴリコントローラー:
アプリモデル:
public $actsAs = array("収容可能"); まだサブサブカテゴリのページに期待される結果が表示されません。何をしたらいいでしょう?
cakephp - コンテインブル動作を使用して取得したビュー/インデックスにデータを表示しますか?
コードで包含可能な動作を使用しましたが、それも機能しています。print_r を書き込むと、期待どおりに配列が表示されますが、問題はそのデータをビュー/インデックスページに表示する方法です
これが私のコードです
これが私のサブサブカテゴリビュー/インデックスページです
しかし、それは私にエラーを与えています
通知 (8): 未定義のインデックス: サブカテゴリ [APP/View/Categories/index.ctp、39 行目]
誰でも助けることができますか?
私はこのような配列を与えています
cakephp - Cakephp の動作の欠落
ローカルホストで CakePHP を使用して Web サイトを開発していますが、サーバーにアップロードしようとすると、Missing Behavior というエラーが表示されます。
cakephp - 包含可能を使用する場合、HABTM 関連レコードが条件によってフィルタリングされない
モデル 1 HABTM モデル 2。Model1 のモデル クラスには、次のコードがあります。
結果には、関連するすべての Model2 レコードが含まれます。そのレコードの名前が「foo」の場合、Model2 レコードのみを返す必要があります。エラーはありません。条件が SQL に追加されることはありません。
Containable は AppModel のactsAs
プロパティで宣言されています。
何を与える?