Поскольку вы новичок в торте, я думаю, что не стоит начинать с отношений HABTM , которые вам нужны в вашем вопросе, а также с самых сложных. Итак, я полагаю, что ваши модели отношений как проще: hasMany . Например, следующим образом:
/*this is your state model
*state table in database should like:id,name
*and business table in database:id,name,state_id
*/
class State extends AppModel
{
var $name = 'State';
var $hasMany = array(
'Business'=>array(
'className'=>'Business',
'foreignKey'=>'state_id',
)
); //this means a State can hasMany Businesses while a Business only belongs to one State
}
Затем выполните действие в контроллере состояния следующим образом:
/*in your state controller*/
function showBusinessesByState($statename)
{
if($statename && $thestate = $this->State->findByName($statename))
{
$this->set('state',$thestate);//debug $thestate you'll find data you need
}
else
{
$this->Session->setFlash("something wrong happens!");
}
}
Теперь я думаю, что вы можете обработать файл представления самостоятельно с помощью переменной $state
для извлечения данных $thestate
, которая также содержит список предприятий.
Теперь в /app/config/routes.php выполните часть маршрутизации:
Router::connect('/states/*',array('controller'=>'states','action' => 'showBusinessesByState'));
После финиша вы можете получить то, что вам нужно, с помощью /states/somestate
. Когда вы пройдете через это, вы можете попытаться решить эту проблему наилучшим образом - hasAndBelongsToMany .