- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 tracking
的实体.它涉及一个User
和一个 Course
.我还有一个名为 credential
的实体正式链接 User
和 Course
User <- Tracking -> Course
|| User <- Credential -> Course
跟踪是某种连接实体,但它不是两者之间的主要连接。我有一个查询,其中我已经加入了用户和类(class),如果存在,我想左加入跟踪。我已尝试简化我的示例。
$q->select(
'user.id',
'user.firstname',
'user.lastname',
'count(t) as courses',
'count(t.completed) as completed'
);
$q->from(Credential::class, 'c');
$q->from(Course::class, 'course');
$q->from(User::class, 'user');
$q->leftJoin(Tracking::class, 't', 'WITH', 't.user = user and t.course = course');
$q->where('c.user = user and c.object = course');
$q->groupBy('user');
我在这里想要实现的是注册类(class)的用户列表、类(class)数量以及可能的已完成类(class)数量。
不幸的是,doctrine 似乎只能连接到用户表或类(class)表,而不能同时连接到两者。这甚至可能是 mysql 的限制。我已经一遍又一遍地调试这个问题 - 我已经用不同的例子多次遇到这个问题 - 而且我似乎无法找到除了使用之外的解决方案 ->from(Tracking)
这将消除尚未开始任何类(class)的学生,以及他们尚未开始的类(class)的统计数据。我在谷歌上搜索了一遍又一遍,但很难搜索到这个问题并且找不到“如何使用 Doctrine 连接两个表”。
我收到错误 Column not found: 1054 Unknown column 'c1_.id' in 'on clause'
我认为这意味着它可以加入 t.user = user
但不是 t.course = course
这是实际的代码和错误
$q = $this->em->createQueryBuilder();
$q->select(
'user.id',
'user.firstname',
'user.lastname',
'count(sc.id) as courses',
'count(ct.commenced) as commenced',
'count(ct.completed) as completed',
'avg(ct.scorePercent) as avgscore',
'avg(ct.totalTime) as avgtime'
);
$q->from(Security\Credential::class, 'c');
$q->from(Security\SecurableCourse::class, 'sc');
$q->from(Security\AccreditableInheritance::class, 'ai');
$q->from(Security\AccreditableUser::class, 'au');
$q->from(User::class, 'user');
$q->join(Tracking\CourseTracking::class, 'ct', 'WITH', 'ct.objectIdentity = sc and ct.user = user');
$q->where('sc = c.securable and ai.parent = c.accreditable and au = ai.child and user = au.user');
$q->andWhere('c.action = :action and sc.course in (:courses)');
$q->setParameter('action', 'study')->setParameter('courses', $courses);
$q->groupBy('user.id');
$users = $q->getQuery()->getScalarResult();
Doctrine\DBAL\Exception\InvalidFieldNameException(code: 0): 执行时发生异常 'SELECT u0_.id AS id_0, u0_.firstname AS firstname_1, u0_.lastname AS lastname_2, count(s1_.id) AS sclr_3, count(t2_.commenced) AS sclr_4, count(t2_.completed) AS sclr_5, avg(t2_.scorePercent) AS sclr_6, avg(t2_.totalTime) AS sclr_7 FROM Credential c3_ INNER JOIN Tracking t2_ ON (t2_.objectIdentity_id = s1_. id AND t2_.user_id = u0_.id) AND t2_.dtype IN ('coursetracking') AND ((t2_.deleted IS NULL OR t2_.deleted > '2016-04-26 08:33:31')), SecurableIdentity s1_ , AccreditableInheritance a4_, AccreditableIdentity a5_, User u0_ WHERE (((s1_.id = c3_.securable_id AND a4_.parent_id = c3_.accreditable_id AND a5_.id = a4_.child_id AND u0_.id = a5_.user_id) AND (c3_.action = ? AND s1_.course_id IN (?, ?, ?))) AND ((u0_.deleted IS NULL OR u0_.deleted > '2016-04-26 08:33:31'))) AND (s1_.dtype IN ('securablecourse') AND a5_.dtype IN ('accreditableuser')) GROUP BY u0_.id' with params [\"study\",\"46\",\"45\",\"160\"]:\n\nSQLSTATE[42S22]: 找不到列: 1054 'on 子句' 中的未知列 's1_.id'
最佳答案
这只是一个如何实现它的提示。我不能给你正确的答案,因为你没有提供足够的细节。但这将帮助您实现所需。
$q->select(u, t, co, ce);
$q->from('User', 'u');
$q->leftJoin('u.tracking', 't');
$q->leftJoin('t.course', 'co');
$q->leftJoin('u.credential', 'ce');
关于mysql - LEFT 在学说查询生成器中加入两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36852349/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!