HABTM関係のモデルにProduct
関連付けられたモデルを持つCakePHP 2.3.xを使用してeコマースサイトを構築しており、結合テーブルとして使用しています。すべての関連付けが正しく機能しており、モデルで を実行すると、関連付けられているすべての製品が表示されます。私の問題は、が見つからない場合でも関連付けを行わせようとしているということです。Order
orders_products
find()
Order
Product
関連付けテーブルに関連情報を保存していますが、Product
モデルが見つからないと関連付けを行う方法が見つかりません。アイテムの名前、販売時の価格などの情報が関連付けに保存されているため、コントローラーとビューは、削除された可能性のあるアイテム、ID が何らかの形で変更された、またはその他の可能性があるアイテムを補うことができます。
あちこち検索しましたが、結合テーブルのクエリを手動で作成するよりも良い解決策が見つからないようです。これを行う適切なケーキの方法はありますか、またはのような別のモデルを使用する必要がありOrderProduct
ますか?
Order
モデルは次のとおりです。
class Order extends AppModel {
public $name = 'Order';
public $belongsTo = array('User');
public $hasAndBelongsToMany = array(
'Product' => array(
'className' => 'Product',
'joinTable' => 'orders_products',
'foreignKey' => 'order_id',
'associationForeignKey' => 'product_id',
'unique' => 'keepExisting'
)
);
}
Product
モデルは次のとおりです。
class Product extends AppModel {
public $name = 'Product';
public $belongsTo = array('Category', 'Brand');
public $hasMany = array('ProductPhoto');
public $hasAndBelongsToMany = array(
'Order' => array(
'className' => 'Order',
'joinTable' => 'orders_products',
'foreignKey' => 'product_id',
'associationForeignKey' => 'order_id',
'unique' => 'keepExisting'
)
);
TLDR バージョン:$this->Order->find('first', $options)
返されたデータですべての製品を取得しますが、結合テーブル ( ) にモデルOrder
との一致がある場合のみです。データベースで が見つかるかどうかに関係なく、返されるデータで結合テーブルの結果 を作成しようとしています。orders_products
Product
$data['Order']['OrderProduct']
Product