2009-10-06 32 views
2

我有一個有很多IPN的訂單表。但是,我沒有使用cakephp約定,因爲IPN表來自Paypal。我想將訂單表的order_num字段加入到IPN表的自定義字段中。所以它會是這樣的: select * from orders left join ipn on orders.order_num = ipn.customcakephp一對多的自定義關係連接

如何在models/order.php中正確設置模型關係。

回答

3

我相信這應該做的伎倆,假設我正確理解關係。

class Order extends AppModel { 
    var $primaryKey = 'order_num'; 

    var $hasMany = array(
     'Ipn' => array(
      'className' => 'Ipn', 
      'foreignKey' => 'custom', 
     ), 
    ); 
} 

class Ipn extends AppModel { 
    var $belongsTo = array(
     'Order' => array(
      'className' => 'Order', 
      'foreignKey' => 'custom', 
     ), 
    ); 
} 
+0

我想這和它的作品,但我有兩個關係 - 訂單的hasMany Orderproduct,訂單的hasMany IPN。在Orderproduct關係中,它是Orderproduct.order_id = Order.id。儘管IPN有效,但設置var $ primaryKey使得Orderproduct停止工作。 – jimiyash 2009-10-07 05:04:36

+1

也許你可以在Ipn的beforeFind()中設置$ primaryKey的值呢?例如:function beforeFind(){$ this-> Order-> primaryKey ='order_num'; } function afterFind(){$ this-> Order-> primaryKey ='id'; } – 2009-10-08 20:42:11