2017-05-31 10 views
2

私は2つのテーブルを持っています。 payment_infosモデルでcakephp 3連想データ用のqueryBuilder

payment_infos: 
id |payer |pay_date |product_price_id |product_price | 

$this->belongsTo('ProductPrices', [ 
     'foreignKey' => 'product_price_id', 
     'className' => 'ProductPrices', 
]); 

私はこのクエリを持っている:

表1:

product_prices: 
id | price |description |pack |display |created |modified | 

表2

$query = $this->find('all', [ 
     'contain' => ['ProductPrices'] 
])); 

上記のクエリを実行しているとき、私は次のエラーを取得する:

Warning (512): Association property name "product_price" clashes 
with field of same name of table "payment_infos". 
You should explicitly specify the "propertyName" option. 
[CORE\src\ORM\Association.php, line 722] 
+0

がjoinType '=>' INNER'' ''とProductPrices''''が 'className' =>の交換を参照してください。あなたはモデルを生成するためにベーキングコンソールを使用しましたか?また、あなたは何を達成しようとしていますか? – Sam

答えて

2

propertyNameの:ソース表の結果に関連するテーブルからのデータで満たされる必要があるプロパティ名を。既定では、これはアソシエーションの&の単数名ですので、この例ではproduct_priceです。

フィールド名がproduct_priceであるため、payment_infosには競合が発生するため、既定のプロパティ名をカスタム名に変更しました。

$this->belongsTo('ProductPrices', [ 
    'foreignKey' => 'product_price_id', 
    'className' => 'ProductPrices', 
    'propertyName' => 'prod_price' 
]); 

BelongsTo Associations

関連する問題