मैं सिद्धांत के साथ सिम्फनी 2 का उपयोग कर रहा हूं, और मेरे पास कई संस्थाओं में कई संस्थाएं शामिल हैं। मान लें कि मेरे पास दो इकाइयां हैं: उपयोगकर्ता और समूह, और डीबी पर संबंधित टेबल उपयोगकर्ता, समूह और उपयोगकर्ता_ समूह हैं।कई लोगों के लिए डीक्यूएल और
मैं शीर्ष 10 सबसे अधिक आबादी वाले समूह को डीक्यूएल में प्राप्त करना चाहता हूं, लेकिन मुझे शामिल तालिका (users_groups) पर क्वेरी करने के लिए वाक्यविन्यास नहीं पता है। मैंने पहले से ही डॉक्टर मैनुअल पर देखा लेकिन मुझे समाधान नहीं मिला, मुझे लगता है कि मुझे अभी भी डीक्यूएल के बारे में जानने के लिए बहुत कुछ है।
सादा एसक्यूएल में हो सकता है कि:
select distinct group_id, count(*) as cnt from users_groups group by group_id order by cnt desc limit 10
आप कृपया मेरी मदद कर सकते मुझे इस DQL को अनुवाद करने के लिए?
अद्यतन (वर्ग):
$dql = "SELECT g.id, count(u.id) as cnt FROM Entity\Group g " .
"JOIN g.users u GROUP BY g.id ORDER BY cnt DESC LIMIT 10;";
$query = $em->createQuery($dql);
$popularGroups = $query->getArrayResult();
अद्यतन:
/**
* Entity\E_User
*
* @ORM\Table(name="users")
* @ORM\Entity
*/
class E_User
{
/**
* @ORM\ManyToMany(targetEntity="E_Group", cascade={"persist"})
* @ORM\JoinTable(name="users_groups",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="cascade")},
* inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id", onDelete="cascade")}
*)
*/
protected $groups;
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $name
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/* ... other attributes & getters and setters ...*/
}
/**
* Entity\E_Group
*
* @ORM\Table(name="groups")
* @ORM\Entity
*/
class E_Group
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $name
*
* @ORM\Column(name="text", type="string", length=255)
*/
private $name;
/* ... other attributes & getters and setters ...*/
}
धन्यवाद, समस्या यह है कि समूह इकाई के पास उपयोगकर्ताओं नामक एक संगठन नहीं है। इसलिए मुझे अपवाद मिलता है: [सेमेन्टिकल एरर] लाइन 0, जी ग्रुप द्वारा ग्रुप के पास कॉल 72: त्रुटि: कक्षा इकाई \ E_Group के पास उपयोगकर्ताओं का नाम नहीं है। मैंने वास्तविक वर्गों के साथ प्रश्न अद्यतन किया। क्या मैं बिडरेक्शनल को कई से अधिक रिश्तों को बनाने के लिए E_Group इकाई में $ उपयोगकर्ता विशेषता जोड़ूं? –
बहुत धन्यवाद। मैं वैसे भी एक द्विपक्षीय संबंध के साथ समाप्त हुआ। यह समझने के लिए कि यह कैसे काम करता है, यह सिर्फ एक डमी क्वेरी थी। एक बार फिर धन्यवाद –