我有这个模型和控制器,如果它是一个hasOne关系它返回正常,但现在DishCategory有很多菜。当我将下面的代码更改为hasMany时,它给出了一个错误,说Dish.id不是已知的列,而如果它是一个hasOne则可以正常工作。我怎样才能使它返回所有具有id = 1的Dish.id? (仍在使用加入)。
class DishCategory extends AppModel{
public $hasOne = array(
'Dish' => array(
'className' => 'Dish',
'foreignKey' => 'dish_category_id'
)
);
}
class DishCategoriesController extends AppController {
function get_categories($id)
{
// find category with a dish of $id
$this->set('dishes', $this->DishCategory->find('all', array(
'conditions' => array(
'Dish.id' => $id
)
)));
// set master layout
$this->layout = 'master_layout';
}
}
答案 0 :(得分:0)
hasOne
关系可以加入主SQL查询。 hasMany
关系不能也不需要在单独的查询中查询。您为查询指定的conditions
仅适用于主查询,所有单独的关系查询都是基于主查询中检索到的id
构建的。将debug设置为2并仔细查看查询日志以查看我的意思。
要查找菜肴的类别,请取出菜肴并查看其相关的类别记录:
$dish = $this->Dish->find('first', array('conditions' => array('Dish.id' => $id)));
echo $dish['DishCategory']['name'];
因为我认为这是一个belongsTo
一个类别,你的查询“找到所有带有id x 的菜肴的类别都没有意义;反正应该只有一个。