Sql 具有多个连接的CAKEPHP3查询ORM

Sql 具有多个连接的CAKEPHP3查询ORM,sql,cakephp,cakephp-3.0,Sql,Cakephp,Cakephp 3.0,我想做的是: 连接多个表 读取数据 若可能,创建具有多个维度的数据数组 我有这样一个数据库: 表项目、标记、用户、类别 加入: 文章需要一个带有标记的内部联接。(多对多关系) 标记内部连接用户。(多对一关系) 标记与类别连接。(多对一关系) 到目前为止,我的问题是: private function findAllArticleRelatedStuff() { $query = $articles->find(); $query->innerJoinWith('Tags',

我想做的是:

  • 连接多个表
  • 读取数据
  • 若可能,创建具有多个维度的数据数组
我有这样一个数据库: 表项目、标记、用户、类别

加入:

  • 文章需要一个带有标记的内部联接。(多对多关系)
  • 标记内部连接用户。(多对一关系)
  • 标记与类别连接。(多对一关系)
到目前为止,我的问题是:

private function findAllArticleRelatedStuff() {
$query = $articles->find();
$query->innerJoinWith('Tags', function ($q) {
    $q->innerJoinWith('Users');
    $q->innerJoinWith('Categories');
    return $q;
});
$query->select(['Articles.articlename', 'Tags.tagname', 'Users.username', 'Categories.categoriename']);
return $query;
}

我想选择articlesname、tagsname、usersname、categoriesname,然后首先打印它(在视图中,“我已经通过set()完成了这项工作”)

我想我犯了一个愚蠢的错误

你能给我一个创建这些值数组的建议吗?我想我读过CakePHP中的一些数组方法

编辑:(找到解决方案) 我没有正确读出数据:

foreach($query as $article) {
    debug($article->articlenamename);
    debug($article->_matchingData["Tags"]["tagname"]);
}

尝试调试($article->tag->tagname)

是否可以定义
文章
标签
用户
类别
之间的关系?Jup,当我使用“正常”查询时,它工作正常。使用contain和innerjoinwith获取关联数据检查编辑,我刚刚找到了解决方案。注意(8):尝试获取非对象的属性
foreach($query as $article) {
    debug($article->articlenamename);
    debug($article->_matchingData["Tags"]["tagname"]);
}