• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تبدیل یک کوئری mysql به Doctrine
#1
سلام
یک جدول به این صورت دارم:
کد:
CREATE TABLE nested_category (
        category_id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(20) NOT NULL,
        lft INT NOT NULL,
        rgt INT NOT NULL
);

و میخوام این کوئری روش اجرا کنم:
کد:
SELECT node.name
FROM nested_category AS node,
        nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
        AND parent.name = 'ELECTRONICS'
ORDER BY node.lft;

چطور میتونم این کوئری با doctrine بنویسم!؟
  پاسخ
تشکر شده توسط :
#2
انتیتی داکترین هم که نوشتی بزار
  پاسخ
تشکر شده توسط :
#3
کد:
namespace Mj\CmsBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* categories
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Mj\CmsBundle\Entity\categoriesRepository")
*/
class Category
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    
    
    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="lft", type="integer")
     */
    private $lft;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="rgt", type="integer")
     */
    private $rgt;
    
    // + get va set ha

میخواستم Nested Set Model که اینجا توضیح داده پیاده کنم.
  پاسخ
تشکر شده توسط :
#4
parent رو هم باید توی category بزاری که رابطه manyToOne داره با خود Category . بعدش dql اینجوری میشه.
کد:
select c  FROM Mj\CmsBundle\Entity\Category c
    INNER JOIN  c.parent p
    where c.lft BETWEEN p.lft AND p.rgt
    AND p.name = 'ELECTRONICS'
ORDER BY n.lft;
ولی برای Tree پیشنهاد می کنم از این افزونه استفاده کنین
https://github.com/l3pp4rd/DoctrineExtensions
https://github.com/l3pp4rd/DoctrineExten...oc/tree.md
  پاسخ
تشکر شده توسط : mohsenkw


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان