CakePHP:限制组中的数字

时间:2013-02-26 21:01:26

标签: cakephp

我正在创造一种游戏,我希望人们能够建立一个城镇 每个用户只能在他们的城镇建造有限数量的特定建筑物(即只有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自己的方法?

1 个答案:

答案 0 :(得分:1)

只需计算用户所拥有类型的建筑物数量。通过添加新建筑,您应该已经知道它的ID和其他数据。

假设这是ja连接表:

$count = $this->UserBuildings->find('count', array(
    'conditions'=> array(
        'UserBuildings.building_id'=>$buildingId,
        'UserBuildings.user_id'=>$this->Auth->user('id')
    )
));

然后,您可以简单地将计数与该建筑物的限制进行比较。所有这一切都应该在模型中发生。