モデル内で virtualField を使用して別のモデル フィールドのエイリアスを作成しようとしている既存の Cake プロジェクトは初めてです。コンテキスト:
class Product extends AppModel {
var $name = 'Product';
var $hasOne = array('ProductPrice');
var $virtualFields = array(
'price' => 'ProductPrice.current_price'
);
// Typical fields in the database for Product. id, name, etc.
}
class ProductPrice extends AppModel {
var $name = 'ProductPrice';
var $belongsTo = array('Product');
// Fields are product_id, current_price
}
ProductPrice モデルは、製品の現在の価格を取得できる current_price 列を持つさまざまな価格帯を含むデータベース内のビュー用です。次のような方法で Product モデルにアクセスする場合:
$this->Product->find('all' ....);
価格フィールドの取得に問題はありません。問題は、 Product へのクエリが次のようなものを介して間接的に行われる場合です
$this->Inventory->find('all');
/dbo_source.php、681
SQL Error: 1054: Unknown column 'ProductPrice.current_price' in 'field list' [CORE/cake/libs/model/datasources
行目]
Inventory クエリによって生成された SQL が ProductPrice ビューに参加しようとしないことが問題であることはわかっています。これは、Product モデルが "hasOne" ProductPrice であることを認識しているため、Product モデルを介して自動的に発生すると想定しました。
Inventory モデルの "recursive" を 2,1 などに設定しようとしましたが、成功しませんでした。
私は何が欠けていますか?