あなたはネイティブDoctrineのクエリメソッドを使用する場合は、order by
パラメータでfindOneBy
を使用する必要があります。
findOneBy(['id' => 1], ['DateCreated' => 'desc'])
その後、あなたはとてもあなたが最後に作成された要素
EDIT
あなたはGroup
エンティティとMember
実体を持っている想像し得るでしょう、ArrayCollection::first()
方法を使用して、結果がArrayCollectionのだと言います。グループテーブルはtable_a
、メンバーテーブルはtable_b
です。
class Group
{
...
/**
* @ORM\OneToMany(targetEntity="Group", mappedBy="member", cascade={"persist", "remove", "merge"})
* @ORM\OrderBy({"dateCreated"="DESC"})
*/
protected $members;
...
public function __construct()
{
$members = new ArrayCollection();
}
// members handling accessors
/**
* @return ArrayCollection
*/
public function getMembers()
{
return $this->members;
}
/**
* @param $members
*
* @return $this
*/
public function setMembers($members)
{
$this->members = new ArrayCollection();
return $this->addMembers($members);
}
/**
* @param $members
*
* @return $this
*/
public function addMembers($members)
{
foreach ($members as $member)
{
$this->addMember($member);
}
return $this;
}
/**
* @param Member $member
*
* @return $this
*/
public function addMember(Member $member)
{
$this->members->add($member);
$member->setGroup($this);
return $this;
}
/**
* @param Member $member
*
* @return $this
*/
public function removeMember(Member $member)
{
if ($this->members->contains($member))
{
$this->members->removeElement($member);
}
return $this;
}
/**
* @param $members
*
* @return $this
*/
public function removeMembers($members)
{
foreach ($members as $member)
{
$this->removeMember($member);
}
return $this;
}
}
とメンバーエンティティ:
エンティティ記述はそのような何かでなければなりません
class Member
{
/**
* @ORM\ManyToOne(targetEntity="Group", inversedBy="members")
* @ORM\JoinColumn(name="group_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $group;
/**
* @ORM\Column(type="datetime", name="date_created")
*/
protected $dateCreated;
/**
* @return Group
*/
public function getGroup()
{
return $this->group;
}
/**
* @param Group $group
*
* @return $this
*/
public function setGroup(Group $group)
{
$this->group = $group;
return $this;
}
}
今、私たちはメンバーのdateCreated
順序付きコレクションで一つのグループを持っています。
例1:あなたは、例2
$group = $em->getRepository(Group::class)->findOneBy(['id' => 1]);
$lastMember = $group->getMembers()->first();
与えられたグループのために作成された最後のメンバーを取得したい:あなたはすべてのメンバーが2014年1月30日に作成されますしたい:
$members = $group->getMembers()->filter(function (Member $member) {
return ($member->getDateCreated->format('Y-m-d') == '2014-01-30');
});
それはみんなです!
PS:私は、私はカント、
良い一日 をこのコードをテストしていないことは、上記の表では、Table_Bであり、その別のテーブル(table_A)との一対一の関係に多くを持っているので。私はtable_Aを最初に見つけ出す必要があります、そして、私はTable_Bのアイテムを探すことができます。 – WyHowe
エンティティの説明を入力してください。 – ceadreak
編集を確認してArrayCollectionの例 – ceadreak