2016-02-04 42 views
0

我想要做什麼:CakePHP的3查詢與多個連接ORM

  • 加入多個表。
  • 閱讀數據。
  • 如果可能,請創建具有多個維度的數據數組。

我有這樣一個數據庫: 表的文章,標籤,用戶,類別

JOIN:

  • 文章需要與標籤內連接。 (多對多關係)
  • 標記與用戶的內部聯接。 (多對一關係)
  • 標籤內部加入類別。 (多對一關係)

我的查詢到目前爲止:

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()完成了)。

foreach($query as $article) { 
    debug($article->articlename); // works fine 

    foreach($article as $tag) { 
     debug($tag->tagname); // no output, no error 

     // other foreach loops or something... 
    } 
} 

我想我在這裏犯了一個愚蠢的錯誤。

你能給我一個建議,以創建這些值的數組?我以爲我讀了CakePHP中的一些數組方法。

編輯:(找到了解決辦法) 我沒有正確讀出的數據:

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

是否可以定義'articles'和'Tags','Users'&'Categories'之間的關係? – BCoder

+0

Jup,當我使用'正常'查詢時,它的工作原理是正確的。 – xDs

+0

使用包含innerjoinwith獲取相關數據http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#passing-conditions-to-contain –

回答

0

嘗試調試($物品─>標籤 - >標記名);

+0

注意(8):試圖獲取非對象的屬性 – xDs