我有一张表保存了。它有PKof用户和产品。对于每个登录的用户,我想查看(例如,savedItems / view / 23)他们购物车中的所有商品。
public function view($id = null)
{
$usersavedproduct = $this->saveditems->get($id, [
'contain' => ['Products', 'Users']
]);
目前它只是变为null,因为它只输入用户ID。我该如何管理?
答案 0 :(得分:0)
你可以使用类似的东西:
$articles = TableRegistry::get('Articles');
$article = $articles->get($id);
// Get a single article, and related comments
$article = $articles->get($id, [
'contain' => ['Comments']
]);
使用find方法检索数据,因为它会为您提供所有数据,并且get会为您提供单行:
$this->saveditems->find()
->where(['id' => $id])
检查此文档: https://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html
答案 1 :(得分:0)
您应该以不同的方式使用您的联接表。如果您的saved_items表具有以下结构:id,user_id,product_id,则可以执行以下操作:
在UsersTable中:
$this->belongsToMany('Products', [
'joinTable' => 'saved_items',
]);
在ProductsTable中:
$this->belongsToMany('Users', [
'joinTable' => 'saved_items',
]);
在UsersTable上执行查询,以查找包含其已保存产品的用户:
$ user = $ this-> Users-> get($ id,[ 'contains'=> [ '产品'] ]);
这将为您提供User实体,以及相关的Product实体。进一步阅读:https://book.cakephp.org/3.0/en/orm/associations.html