Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2014
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. SELECT t.*
  2. FROM
  3. StateLogItem s NATURAL JOIN (
  4. SELECT
  5. task_id,
  6. MAX(
  7. COALESCE(updatedAt, createdAt)
  8. ) d,
  9. MAX(id) id
  10. FROM
  11. StateLogItem
  12. WHERE
  13. dtype = 'transitionlogitem'
  14. GROUP BY
  15. task_id
  16. ) m
  17. RIGHT JOIN Task t ON t.id = s.task_id
  18. WHERE s.toState = 'started';
  19.  
  20. '20', 1, NULL, 'just because', '2014-07-18 10:49:00', NULL
  21.  
  22. public function findByActionStatus($status){
  23. $sql = "SELECT t.id, t.description, t.created_by, t.updated_by, t.createdAt, t.updatedAt
  24. FROM StateLogItem s
  25. NATURAL JOIN (
  26. SELECT task_id, MAX(COALESCE(updatedAt,createdAt)) d, MAX(id) id
  27. FROM StateLogItem
  28. WHERE dtype = 'transitionlogitem'
  29. GROUP BY task_id
  30. ) m
  31. RIGHT JOIN Task t ON t.id=s.task_id
  32. WHERE s.toState = :status";
  33.  
  34. $em = $this->getEntityManager();
  35.  
  36. $rsm = new ResultSetMapping();
  37. $rsm->addEntityResult('ACCQueueBundle:Task', 't');
  38. $rsm->addFieldResult('t','t.id','id');
  39. $rsm->addFieldResult('t','t.created_by','createdBy');
  40. $rsm->addFieldResult('t','t.updated_by','updatedBy');
  41. $rsm->addFieldResult('t','t.description','description');
  42. $rsm->addFieldResult('t','t.createdAt','createdAt');
  43. $rsm->addFieldResult('t','t.updatedAt','updatedAt');
  44.  
  45. $rsm->addJoinedEntityResult('ACCQueueBundle:TransitionLogItem','s','t','transitions'); //tried with and without
  46.  
  47.  
  48. $query = $em->createNativeQuery($sql,$rsm);
  49. $query->setParameter('status', $status);
  50.  
  51. return $query->getResult();
  52.  
  53. }
  54.  
  55. namespace ACCQueueBundleEntity;
  56.  
  57. use DoctrineORMMapping as ORM;
  58.  
  59.  
  60. use SymfonyComponentValidatorConstraints as Assert;
  61. use DoctrineCommonCollectionsArrayCollection;
  62. use ACCTraitsBlameableTrait;
  63. use ACCMainBundleEntityTraitsHasDocumentsTrait;
  64. use GedmoMappingAnnotation as Gedmo;
  65. use GedmoTimestampableTraitsTimestampableEntity;
  66.  
  67.  
  68. /**
  69. * Task
  70. * @ORMEntity(repositoryClass="ACCQueueBundleEntityTaskRepository")
  71. * @ORMHasLifecycleCallbacks()
  72. *
  73. */
  74. class Task {
  75.  
  76. use HasDocumentsTrait;
  77. use BlameableTrait;
  78. use TimestampableEntity;
  79.  
  80. /**
  81. * @var integer
  82. *
  83. * @ORMColumn(name="id", type="integer")
  84. * @ORMId
  85. * @ORMGeneratedValue(strategy="AUTO")
  86. */
  87. protected $id;
  88.  
  89.  
  90. /**
  91. * @var Transition
  92. *
  93. * @ORMOneToMany(targetEntity = "TransitionLogItem", mappedBy = "task", orphanRemoval = true, cascade = {"persist"})
  94. * @ORMOrderBy({"createdAt" = "ASC"})
  95. */
  96. protected $transitions;
  97.  
  98. /**
  99. * @var Pause
  100. *
  101. * @ORMOneToMany(targetEntity = "PauseLogItem", mappedBy = "task", orphanRemoval = true, cascade = {"persist"})
  102. * @ORMOrderBy({"createdAt" = "ASC"})
  103. */
  104. protected $pauses;
  105.  
  106.  
  107. /**
  108. * @var string
  109. *
  110. * @ORMColumn(name="description", type="text")
  111. */
  112. protected $description;
  113.  
  114. /**
  115. * @ORMManyToMany(targetEntity = "ACCMainBundleEntityDocument", cascade={"persist","remove"})
  116. * @ORMJoinTable(name="Task_Document",
  117. * joinColumns={@ORMJoinColumn(name="task_id", referencedColumnName="id")},
  118. * inverseJoinColumns={@ORMJoinColumn(name="document_id", referencedColumnName="id", unique=true)})
  119. */
  120. protected $documents;
  121.  
  122. //etc.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement