このモデルから特定の友達を選択する方法を知りたいです。
モデル構造は次のとおりです。
/**
* @MongoDB\ReferenceMany(targetDocument="Users", mappedBy="myFriends")
*/
public $friendsWithMe;
/**
* @MongoDB\ReferenceMany(targetDocument="Users", inversedBy="friendsWithMe")
*/
public $myFriends;
public function __construct() {
$this->friendsWithMe = new \Doctrine\Common\Collections\ArrayCollection();
$this->myFriends = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add friend
* @param Users $user
*/
public function addFriend(Users $user) {
$user->friendsWithMe[] = $this;
$this->myFriends[] = $user;
}
/**
* Get friends
* @return Array $myFriends
*/
public function getFriends() {
return $this->myFriends;
}
ユーザーの友達を取得するには、次のコードを使用します。
foreach($userSearch->getFriends() as $friend){
$output .= " FriendName: " . $friend->getFirstName() . " - ID: " . $friend->getId() . "<br>";
}
したがって、すべての友達を取得してループさせたくない場合、特定のユーザーまたはユーザー(友達)を取得するにはどうすればよいですか?20歳以上としましょう。
編集 済みここでは、コレクションにあるドキュメントを追加しているので、クライアント側のforループではなく、たとえばx歳より古い2人の友人の1人をクエリで取得する方法を探しています。
{
"_id": ObjectId("503f3028e71a38840d000000"),
"birthdate": ISODate("2012-08-30T09: 19: 36.0Z"),
"email": "mail",
"firstName": "asd",
"myFriends": {
"0": {
"$ref": "Users",
"$id": ObjectId("503e1683921da8c80b000002"),
"$db": "testing"
},
"1": {
"$ref": "Users",
"$id": ObjectId("503e0a8ee71a38080b000001"),
"$db": "testing"
}
},
"password": "123",
"role": {
"$ref": "UserRoles",
"$id": ObjectId("50486ba1e71a384c15000000"),
"$db": "testing"
},
"username": "gizmo"
}
注: ZF2プロジェクト(ZF2 + DoctrineOdmMongodb)のモジュールで使用しています