我正在创建一种游戏,我希望人们能够建造一个小镇。
每个用户只能在他们的城镇中建造有限数量的特定建筑物(即只有2个邮局,1个市政厅等)
我正在为如何实现这个目标而苦苦挣扎。
我有一个用于跟踪用户/建筑关联的UserBuildings表、一个Buildings表和一个User表。
在我将一座建筑物添加到我所在的城市的表单上,我希望首先检查该建筑物的限制,如果已达到该建筑物,则将其从可用建筑物列表中删除。这就是我所拥有的:
$buildings = $this->UserBuildings->Buildings->find('list');
$currents = $this->UserBuildings->find('all', array(
'conditions'=> array(
'UserBuildings.user_id'=>$this->Auth->user('id')
)
));我可以从$currents数组中获取限制。
有没有一种方法,通过查找和查询,我可以添加一些条件到我的$buildings列表中,以删除任何达到容量的条目。
显然,我可以通过for循环运行比较,并通过检查容量与UserBuildings表中匹配条目的数量来构建更精细的列表,但是有没有更好的方法,比如使用CakePHP自带的方法?
发布于 2013-02-27 06:28:49
简单地计算一下用户拥有多少种类型的建筑物。通过添加一个新的建筑物,你应该已经知道它的id和其他数据。
假设这是ja连接表:
$count = $this->UserBuildings->find('count', array(
'conditions'=> array(
'UserBuildings.building_id'=>$buildingId,
'UserBuildings.user_id'=>$this->Auth->user('id')
)
));然后,您可以简单地将计数与您对该建筑的限制进行比较。顺便说一句,所有这些都应该在模型中发生。
https://stackoverflow.com/questions/15099175
复制相似问题