rem*_*emi 3 php mongodb doctrine-orm doctrine-odm
我有一个具有权限的事件,此权限引用用户.我正在尝试获取与用户相关的所有事件,但我似乎无法按照我的意愿获得教义.
这是我的Mongo架构
Array
(
[_id] => 4e63903cbc3470a2cd000002
[date] => 2011-10-09
[name] => Event1
[privileges] => Array
(
[0] => Array
(
[user] => Array
(
[$ref] => users
[$id] => 4e63611cbc347053a2000001
[$db] => eventdb
)
[role] => admin
)
)
[url] => Event1
)
Run Code Online (Sandbox Code Playgroud)
学说事件实体:
class Event {
/**
* @Id
*/
protected $id;
/**
* @String
*/
protected $name;
/**
* @EmbedMany(targetDocument="\Event\Privilege")
*/
protected $privileges = array();
}
Run Code Online (Sandbox Code Playgroud)
特权实体:
class Privilege {
/**
* @ReferenceOne(targetDocument="\User", cascade={"persist"})
*/
protected $user;
/**
* @String
*/
protected $role;
}
Run Code Online (Sandbox Code Playgroud)
和用户实体:
class User {
/**
* @Id
*/
protected $id;
/**
* @String
*/
private $firstname;
/**
* @String
*/
private $lastname;
/**
* @String
*/
protected $username;
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下但没有成功
Example 1:
$privilege_repository = $dm->getRepository('\Event\Privilege');
$qb1 = $privilege_repository->createQueryBuilder('\Event\Privilege') ->field('user.$id')->equals('4e63611cbc347053a2000001');
$query1 = $qb1->getQuery();
$result1 = $query1->execute();
$result1->count() :0
Example 2:
$privilege_repository = $dm->getRepository('\Event\Privilege');
$qb2 = $privilege_repository->createQueryBuilder('\Event\Privilege') ->field('user.$id')->equals(new \MongoId('4e63611cbc347053a2000001'));
$query2 = $qb2->getQuery();
$result2 = $query2->execute();
$result2->count() :0
Example 3:
$privilege_repository = $dm->getRepository('\Event\Privilege');
$qb3 = $privilege_repository->createQueryBuilder('\Event\Privilege') ->field('user')->equals(new \MongoId('4e63611cbc347053a2000001'));
$query3 = $qb3->getQuery();
$result3 = $query2->execute();
$result3->count() :0
Run Code Online (Sandbox Code Playgroud)
我也试过使用Event类,但它没有取得更大的成功......我肯定错过了一些东西,但我不知道是什么!欢迎任何帮助.
谢谢.
**一天晚上**终于搞定了!
Example 2:
$privilege_repository = $dm->getRepository('\Event');
$qb2 = $privilege_repository->createQueryBuilder('\Event') ->field('privileges.user.$id')->equals(new \MongoId('4e63611cbc347053a2000001'));
$query2 = $qb2->getQuery();
$result2 = $query2->execute();
$result2->count() :3
Run Code Online (Sandbox Code Playgroud)
你真的需要使用新的MongoId(),否则它总是返回空!
| 归档时间: |
|
| 查看次数: |
3946 次 |
| 最近记录: |