hasOne
отношения могут быть объединены в основной запрос SQL. hasMany
отношения не могут и должны запрашиваться в отдельном запросе. conditions
, указанное вами для запроса, применяется только к первичному запросу, все отдельные реляционные запросы строятся только на основе id
s, полученных в первичном запросе. Установите debug равным 2 и внимательно изучите журнал запросов, чтобы понять, что я имею в виду.
Чтобы найти категорию блюда, возьмите блюдо и посмотрите на соответствующую запись категории:
$dish = $this->Dish->find('first', array('conditions' => array('Dish.id' => $id)));
echo $dish['DishCategory']['name'];
Поскольку я считаю, что блюдо belongsTo
одна категория, ваш запрос "найти все категории, в которых есть блюдо с идентификатором x" не имеет смысла; в любом случае должен быть только один.