我有以下Doctrine2查询:
$qb = $em->createQueryBuilder()
->select('t.tag_text, COUNT(*) as num_tags')
->from('CompanyWebsiteBundle:Tag2Post', 't2p')
->innerJoin('t2p.tags', 't')
->groupBy('t.tag_text')
;
$tags = $qb->getQuery()->getResult();
Run Code Online (Sandbox Code Playgroud)
运行时,我收到以下错误:
[Semantical Error] line 0, col 21 near '*) as num_tags': Error: '*' is not defined.
Run Code Online (Sandbox Code Playgroud)
我如何在Doctrine2中进行MySQL计数(*)?
我正在尝试生成一个嵌套数组,其中包含Apple Swift编程语言中重复的所有组合.
有关重复组合的详细说明,请参见本页底部:http://www.mathsisfun.com/combinatorics/combinations-permutations.html
简单地说,顺序无所谓,我们可以重复
n =我们选择的一组事物
r =我们选择的东西数量
我想创建一个函数,它将生成一个嵌套数组,其中包含对n和r的任何(小)值重复的所有组合.
如果有n = 3个可供选择的东西,我们选择r = 2.
n = [0, 1, 2]
r = 2
Run Code Online (Sandbox Code Playgroud)
该函数的结果combos(n: [0, 1, 2], r: 2)将是:
result = [
[0, 0],
[0, 1],
[0, 2],
[1, 1],
[1, 2],
[2, 2]
]
// we don't need [1, 0], [2, 0] etc. because "order does not matter"
Run Code Online (Sandbox Code Playgroud)
这里有许多编程语言的例子:http://rosettacode.org/wiki/Combinations_with_repetitions
这是PHP示例.它是最简单的并返回一个数组,这就是我想要的:
function combos($arr, $k) {
if ($k == 0) {
return array(array());
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试从两个日期之间具有startTime的Core Data记录中获取.
这是我的代码:
NSDate *today = [NSDate date];
NSDate *distantFuture = [NSDate distantFuture];
// Create the predicate
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"startTime BETWEEN %@", [NSArray arrayWithObjects:today, distantFuture, nil]];
NSLog(@"today: %@, distantFuture: %@", today, distantFuture);
NSLog(@"predicate: %@", predicate);
// Add the predicate to the fetchRequest
[[[self fetchedResultsController] fetchRequest] setPredicate:predicate];
NSError *error;
if (![[self fetchedResultsController] performFetch:&error])
{
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
Run Code Online (Sandbox Code Playgroud)
这是控制台输出:
2011-03-11 02:00:03.166 TestApp[2668:307] today: 2011-03-11 01:00:03 …Run Code Online (Sandbox Code Playgroud) 我正在尝试检索特定A/B测试组合每天的访问次数和转化次数.每种组合代表A/B测试的不同变化.在这里,我只使用'1'并'2'代表变化,但从技术上讲,可能会有更多的变化.
我写了以下2个查询,它们独立工作.是否可以组合这些或写一个检索我想要的数据的查询?
访问查询:
SELECT DATE(visit.created), visit.combination, COUNT(visit.id)
FROM visit
WHERE visit.user_id = 6
AND visit.experiment_id = 1
GROUP BY DATE(visit.created), visit.combination
Run Code Online (Sandbox Code Playgroud)
访问结果:
转化查询:
SELECT DATE(conversion.created), conversion.combination, COUNT(conversion.id)
FROM conversion
WHERE conversion.user_id = 6
AND conversion.experiment_id = 1
AND conversion.goal_id = 1
GROUP BY DATE(conversion.created), conversion.combination
Run Code Online (Sandbox Code Playgroud)
转化结果:
如果我可以检索一个正在运行的总计(累计)计数,如下所示,请查看最后两列.我已经按照组合对下表进行了分组,因此累积计数更容易理解:
+---------------+-------------+----------------------+-----------------+--------------+--------------+
| DATE(created) | combination | COUNT(conversion.id) | COUNT(visit.id) | cumulative_c | cumulative_v |
+---------------+-------------+----------------------+-----------------+--------------+--------------+
| 2015-11-17 | 1 | 1 | 3 | 1 | 3 |
| …Run Code Online (Sandbox Code Playgroud) 如何设置React Navigation模式视图的高度,一旦它出现,它将仅从底部向上覆盖屏幕的大约一半,并且下面的视图仍然可见?
更新:我正在尝试创建类似于App Store购买模式的ux流程,其中某种StackNavigator嵌套在填充屏幕下半部分的模式中.
合并一个具有相关实体的实体与关系设置为级联的持久化和合并操作后,关系就会丢失!
以下是实体:
class Event implements NormalizableInterface
{
/**
* @ORM\ManyToMany(targetEntity="Participant", inversedBy="events", cascade={"persist", "merge"})
* @ORM\JoinTable(name="event_participant",
* joinColumns={@ORM\JoinColumn(name="event_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="participant_id", referencedColumnName="id", onDelete="CASCADE")}
* )
*/
private $participants;
}
class Participant implements NormalizableInterface
{
/**
* @ORM\ManyToMany(targetEntity="Event", mappedBy="participants", cascade={"persist", "merge"})
*/
protected $events;
}
Run Code Online (Sandbox Code Playgroud)
这是我的加入:
foreach ($events as $event)
{
if (!$event->hasParticipant($participant)) {
$event->addParticipant($participant);
}
if (!$participant->hasEvent($event)) {
$participant->addEvent($event);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的合并代码:
echo "Before merge participant count: ".count($event->getParticipants()).PHP_EOL;
$event = $em->merge($event);
echo "After merge participant count: ".count($event->getParticipants()).PHP_EOL;
Run Code Online (Sandbox Code Playgroud)
......这是输出:
Before merge …Run Code Online (Sandbox Code Playgroud) 我有几个开始的路线,/experiment/{id}/...我厌倦了重写相同的逻辑来检索已登录用户的实验。我想我可以重构我的代码,但我猜@ParamConverter会是一个更好的解决方案。
我将如何重写以下代码以利用 Symfony 的@ParamConverter功能?
/**
* Displays details about an Experiment entity, including stats.
*
* @Route("/experiment/{id}/report", requirements={"id" = "\d+"}, name="experiment_report")
* @Method("GET")
* @Template()
* @Security("has_role('ROLE_USER')")
*/
public function reportAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();
$experiment = $em->getRepository('AppBundle:Experiment')
->findOneBy(array(
'id' => $id,
'user' => $this->getUser(),
));
if (!$experiment) {
throw $this->createNotFoundException('Unable to find Experiment entity.');
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
实验实体具有如下复合主键:
class Experiment
{
/**
* @var integer
*
* @ORM\Column(name="id", …Run Code Online (Sandbox Code Playgroud) 作为我网站的一部分,我正在尝试使用Symfony2和Doctrine2创建标记(folksonomy)系统.
我正在按照下面的文档中的表和查询示例创建我的Doctrine实体:http://dablog.ulcc.ac.uk/wp-content/uploads/2007/12/tagging_folksonomy.pdf
当我尝试将MySQL查询(在文档中给出)转换为Doctrine Query Builder查询时,我得到了innerJoins的错误.示例如下:
来自文档的MySQL查询:
SELECT tag_text
, COUNT(*) as num_tags
FROM Tag2Post t2p
INNER JOIN Tags t
ON t2p.tag_id = t.tag_id
GROUP BY tag_text;
Run Code Online (Sandbox Code Playgroud)
我的Doctrine Query Builder查询:
$qb = $em->createQueryBuilder()
->select('t.tag_text, COUNT(*) as num_tags')
->from('CompanyWebsiteBundle:Tag2Post', 't2p')
->innerJoin('CompanyWebsiteBundle:Tags', 't', 'ON', 't2p.tag_id = t.id')
->groupBy('t.tag_text')
;
$tags = $qb->getQuery()->getResult();
Run Code Online (Sandbox Code Playgroud)
错误信息:
[2/2] QueryException: [Syntax Error] line 0, col 112: Error: Expected Doctrine\ORM\Query\Lexer::T_WITH, got 'ON'
[1/2] QueryException: SELECT t.tag_text, COUNT(*) as num_tags FROM CompanyWebsiteBundle:Tag2Post t2p INNER JOIN CompanyWebsiteBundle:Tag t …Run Code Online (Sandbox Code Playgroud) doctrine-orm ×4
symfony ×4
mysql ×3
php ×3
arrays ×1
cascade ×1
combinations ×1
core-data ×1
doctrine ×1
exception ×1
function ×1
many-to-many ×1
merge ×1
modal-dialog ×1
nsdate ×1
nspredicate ×1
react-native ×1
sql ×1
swift ×1