我的模型中存在以下情况:
-a "users" table, with "id" as primary key
-a "stores" table with "id" as primary key, and "users_id" as foreign key
-a "promos" table with "id" as primary key, and "stores_id" as foreign key
换句话说,每个促销只属于1个商店,每个商店只属于1个用户,关系在模型文件中设置。
我想创建一个操作/视图,允许登录用户只看到他自己的宣传片,但我不确定如何。
以下代码给我一条错误消息,因为“User.id”不是promos表的一部分,但是我不知道如何创建参数,这些参数只会将促销列表限制为此用户拥有的商店。 / p>
$allPromos = $this->Promo->find('all', array('conditions' => array('Store.id' => $storeId, 'Store.enabled' => 1, 'User.id' => $this->Session->read('id'))));
任何提示?
谢谢!
答案 0 :(得分:0)
嗯,你的模型结构有点奇怪。现在看起来每个商店只属于一个用户,每个促销只属于一个商店。如果这是正确的,请确保您的模型关联正确。
您在这里找到了用户,因此User.php需要var $hasMany = array('Store')
而Store.php需要var $hasMany = array('Promo')
$allPromos = $this->User->find('all',
array('fields' => array('Promo.*'),
'contain' => array('Store', 'Promo'),
'recursive' => 2 //Two levels of recursion to get from User to Store to Promo
'conditions' =>
array('Store.id' => $storeId,
'Store.enabled' => 1,
'User.id' => $this->Session->read('id'))));
答案 1 :(得分:0)
在PromosController中:
$this->Promo->find('all', array(
'conditions'=>array(
'Store.user_id'=>$this->Session->read('id'),
'Store.enabled'=>1),
'contain'=>array('Store'));
在UsersController中获取有关用户,他的商店和促销的信息:
$this->User->find('first', array('conditions'=>array(
'User.id' => $this->Session->read('id'),
'Store.enabled' => 1),
'contain'=>array('Store'=>'Promo')
));