さて、私はこれを機能させる方法を研究し、研究したという質問があります、そして私の人生のために私はできません!...おそらく私はこれを間違ってやっていて、最小限の情報が見つかりました..
timeclock setupという名前のテーブルがあります。このテーブルには、レコードが属するユーザーのIDであるnoteBy_idというフィールドがあります。
私が今やらなければならないのは、システム内の管理側です。このタイムレコーダーシステムを使用している会社は複数あると予想されるため、会社IDに基づいて結果をフィルタリングする必要があります。ユーザーテーブル、という名前のフィールドがありますparentcompany_id
だから、私が何をする必要があるかを言葉で表現できるかどうか見てみましょう。
タイムレコーダーから*を選択し、user.parentcompany_idに参加する必要があります。ここで、timeclock.daydate <:startおよびここでu.parentcompany =:pid
ここで、startは次のとおりです。 `date('Ymd 00:00:00');
私はこのクエリを設定しました:
$em = $this->getDoctrine()->getEntityManager();
$start = date('Y-m-d 00:00:00');
$qb = $em->getRepository('EcsCrmBundle:TimeClock');
$qb = $qb->createQueryBuilder('t');
$query = $qb->select('t, u.parentcompany_id')
->from('timeclock', 't')
->leftJoin('Ecs\AgentManagerBundle\Entity\User', 'u', 'ON' 'u.id = t.noteBy_id AND u.parentcompany_id = :pid')
->where('t.daydate < :start')
->andWhere("t.noteBy_id != ''")
->setParameter('start', $start)
->setParameter('pid', $user->getParentcompany())
->getQuery();
$entities = $query->getArrayResult();
私は調べてみましたが、私が得るエラーの解決策を見つけることができません:それは次のとおりです:
An exception has been thrown during the rendering of a template ("[Semantical Error] line 0, col 112 near 'u ON u.id = t.noteBy_id': Error: Identification Variable Ecs\AgentManagerBundle\Entity\User used in join path expression but was not defined before.") in EcsCrmBundle:TimeClock:manager.html.twig at line 5.
出力を取得するクエリは次のとおりです。
SELECT t, u.parentcompany_id FROM Ecs\CrmBundle\Entity\TimeClock t LEFT JOIN Ecs\AgentManagerBundle\Entity\User u ON u.id = t.noteBy_id AND u.parentcompany_id = :pid, timeclock t LEFT JOIN Ecs\AgentManagerBundle\Entity\User u ON u.id = t.noteBy_id AND u.parentcompany_id = :pid WHERE t.daydate < :start AND t.noteBy_id != ''
これは通常の状況では完全に機能します...しかし、これでは機能しません...何かアイデアはありますか?