0

ケーキのクエリ:

$this->Token->find("first", array(
    "conditions" => array(
             "Token.token" => $token),
    "contain" => array( 
             "TokenGroup" => array(
                          "TokenPermission" => array("fields" => array("path") )
) ) ));

次のようなものを (部分的に) 返します。

[TokenGroup] => Array
    (
        [id] => 1
        [name] => admin
        [modified] => 2013-03-07 00:00:00
        [created] => 2013-03-07 00:00:00
        [TokenPermission] => Array
            (
            )

    )

TokenPermition 配列は空ですが、SQL を使用すると:

SELECT 
   TokenPermission.path 
FROM 
    tokens AS Token 
INNER JOIN 
   token_groups AS TokenGroup ON (Token.token_group_id = TokenGroup.id) 
INNER JOIN 
   token_groups_token_permissions AS JoinTable ON (TokenGroup.id = JoinTable.token_group_id) 
INNER JOIN 
   token_permissions AS TokenPermission ON (TokenPermission.id = JoinTable.token_permission_id); 
WHERE 
   Token.token = $token

TokenPermission データが返されます。

[TokenPermission] => Array
      (
             [path] => TOKEN_NUMBER
      )

また、私が別のユーザーグループのアクセス許可を要求すると、グループ番号1に割り当てられたアクセス許可を返すことができます-これはユーザーではなく管理者です!

では、SQL がすべて正常に返すのに、Cake が正しいリレーションを認識しないのはなぜでしょうか?

4

1 に答える 1

0

Cake が実行するクエリを見れば、答えが見つかるかもしれません。find メソッドの後にコードを追加します。

$this->Token->->getDataSource()->getLog(false, false);
于 2013-03-07T15:44:41.623 に答える