我有三个表格公司,产品和价格。
Companies hasMany Products
Products hasMany Prices
我目前正在尝试在这些表格中搜索低于特定价格的产品,我正在尝试的代码是:
$results = $this->Product->find('all', array(
'conditions' => array(
'Price.price <=' 10
)
));
由于某种原因,使用此代码 cakephp 会带回一个错误:
Unknown column 'Price.price' in 'where clause'
我认为这是因为产品有多个价格(它与公司表而不是价格表相连),谁能告诉我为什么会出错并知道如何让它工作?
注意:在完成此操作后,我希望能够根据价格和产品表中的条件查找产品,然后在结果页面中显示所有 3 个产品的数据。
我想先搜索价格表,然后再搜索产品表,但我相信一定有更有效的方法吗?
您可以对这些类型的查询使用 adhoc-joins。Cake 不会对 1:n 或 n:n 关系进行联接,因此您必须手动指定它。
$results = $this->Product->find('all', array(
'joins' => array(
array(
'alias' => 'Price',
'table' => 'prices',
'foreignKey' => false,
'conditions' => array('Price.product_id = Product.id'),
),
),
'conditions' => array(
'Price.price <=' => 10,
),
));
在你的位置上,我会这样做:
$results = $this->Product->Price->find('all', array(
'recursive' => 2,
'conditions' => array(
'Price.price <=' => 10
)
));
HasMany 不连接表,但属于 To。