我正在创造一种游戏,我希望人们能够建立一个城镇 每个用户只能在他们的城镇建造有限数量的特定建筑物(即只有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自己的方法?
答案 0 :(得分:1)
只需计算用户所拥有类型的建筑物数量。通过添加新建筑,您应该已经知道它的ID和其他数据。
假设这是ja连接表:
$count = $this->UserBuildings->find('count', array(
'conditions'=> array(
'UserBuildings.building_id'=>$buildingId,
'UserBuildings.user_id'=>$this->Auth->user('id')
)
));
然后,您可以简单地将计数与该建筑物的限制进行比较。所有这一切都应该在模型中发生。