具有复合键的表的CakePHP视图

具有复合键的表的CakePHP视图,php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,我有一张桌子。它有一个用户和产品的组合。对于每个登录的用户,我希望查看(比如savedItems/view/23)他们购物车中的所有项目 public function view($id = null) { $usersavedproduct = $this->saveditems->get($id, [ 'contain' => ['Products', 'Users'] ]); 目前它只是显示为空,因为它只输

我有一张桌子。它有一个用户和产品的组合。对于每个登录的用户,我希望查看(比如savedItems/view/23)他们购物车中的所有项目

public function view($id = null)
    {
        $usersavedproduct = $this->saveditems->get($id, [
            'contain' => ['Products', 'Users']
        ]);

目前它只是显示为空,因为它只输入用户id。我如何管理它?

您可以使用下面的方法:

$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])
检查以下文档:

您应该以不同的方式使用联接表。如果保存的\u items表具有以下结构:id、user\u id、product\u id,则可以执行以下操作:

  • 联接用户和产品表:
  • 在UsersTable中:

    $this->belongsToMany('Products', [
            'joinTable' => 'saved_items',
        ]);
    
    在ProductsTable中:

    $this->belongsToMany('Users', [
            'joinTable' => 'saved_items',
        ]);
    
  • 对UsersTable执行查询以查找用户及其保存的产品:

    $user=$this->Users->get$id[ '包含'=>['产品'] ]);

  • 这将为您提供用户实体和关联的产品实体。进一步阅读: