0

我正在使用 CakePHP 2.3.x 构建一个电子商务站点,该站点具有一个与 HABTM 关系中的Product模型相关联的Order模型,并且我将orders_products其用作我的连接表。我的所有关联都正常工作,并且find()Order模型上进行操作会调出所有相关产品。Product我的问题是,如果找不到,我正试图让关联仍然发生。

我将相关信息保存在关联表中,但在没有找到Product模型的情况下找不到建立关联的方法。我有诸如商品名称、销售时的价格等信息存储在关联中,因此控制器和视图可以补偿可能已被删除、以某种方式更改 ID 或其他任何可能发生的商品。

我已经搜索了所有内容,但似乎找不到比手动为连接表构建查询更好的解决方案。是否有合适的 Cake 方式来执行此操作,或者我应该使用单独的模型,例如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可以在数据库中找到。

4

0 回答 0