问题描述
朋友,我有一个订单表,其中记录了用户的订单。该表包含以下字段:
id,数量,product_id,user_id
通过这种方式,用户可以购买其产品并查阅其历史记录。问题是我想在注册产品的公司那边这样做。我只想为拥有产品的用户按product_id进行过滤。
我的OrdersTable.PHP
.
.
$this->belongsTo('Products',[
'foreignKey' => 'product_id','joinType' => 'INNER',]);
$this->belongsTo('Users',[
'foreignKey' => 'user_id',]);
}
我的方法如下。请注意,我以手动输入ID为例。这个想法是从登录的用户那里捕获这些信息。如果有人可以查看或评论,我将不胜感激。我不知道该怎么解决!
public function index()
{
$this->paginate = ['contain' => ['Users','Products']];
$query = $this->Orders->find('all')->where(['Orders.product_id' => 76]);
$this->set('orders',$this->paginate($query));
$this->set('_serialize',['order']);
}
解决方法
谢谢大家的关注。我是这样决定的:
$query = $this->Orders->find();
$query->contain('Products',function ($q) {
return $q->where(['Products.user_id' => $this->getRequest()->getSession()->read('Auth.User.id')]);
});