按照介绍cakephp教程创建博客,我创建了一个数据库来查看,添加/编辑/删除业务。每个企业都有一个与之相关的州或省,我想知道我将如何生成一个列出所有州的页面,例如/州和一个页面就像/ states / california并列出所有的业务加利福尼亚。
目前我现在只有一个页面列出了所有商家。想知道我将如何设计模型/控制器/视图和路线来处理这个问题。无法在网上找到详细阐述的消息来源,或者我只是不知道如何看待。
答案 0 :(得分:0)
由于你是新手,我认为从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。