Symfony2 এবং মতবাদ - ত্রুটি: অবৈধ পথপ্রদর্শন। স্টেটফিল্ডপ্যাথএক্সপ্রেশন হতে হবে


91

আমার এমন একটি সত্তা রয়েছে যা দেখতে এটির মতো দেখাচ্ছে:

/**
 * @Gedmo\Tree(type="nested")
 * @ORM\Table(name="categories")
 * @ORM\Entity()
 */
class Category extends BaseCategory
{

    /**
    * @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
    */
    protected $children;

    /**
    * @Gedmo\TreeParent
    * @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
    * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="SET NULL")
    */
    protected $parent;

}

এবং আমি এই জাতীয় একটি কোয়েরি চালানোর চেষ্টা করছি:

$qb = $this->em->createQueryBuilder()
            ->select('c.parent')
            ->from('Category', 'c');

$result = $qb->getQuery()->getArrayResult();

তবে, আমি নিম্নলিখিত ত্রুটিটি পাচ্ছি:

[Semantical Error] ... Error: Invalid PathExpression. Must be a StateFieldPathExpression. 

আমি কীভাবে আমার টেবিল থেকে প্যারেন্ট_আইডি ফিল্ডটি নির্বাচন করতে পারি। আমি একগুচ্ছ বৈচিত্র চেষ্টা করেছি এবং এমনকি আমি এরকম কিছু করলেও:

$qb = $this->em->createQueryBuilder()
            ->select('c')
            ->from('Category', 'c');

আমি প্যারেন্ট_আইডি বাদে সারণীতে সমস্ত ক্ষেত্র পেয়েছি। এটি মতাদর্শের পথে চলেছে বলে মনে হচ্ছে। এই প্যারেন্ট_আইডি ফিল্ডের জন্য কীভাবে জিজ্ঞাসা করব? বা আরও ভালতর আমি কীভাবে প্যারেন্ট_আইডিসহ টেবিলে সমস্ত ক্ষেত্র পেতে পারি

উত্তর:


236

আপনি বর্তমানে কোনও অনাবৃত IDENTITYফাংশনটি এফকে আইডি নির্বাচন করতে চান:

SELECT IDENTITY(c.parent) ...


4
এটি সেই সত্তার জন্য fk আইডি প্রদান করে। আপনি কীভাবে সেই সত্তাকে হাইডেট করবেন? $query->getResult(\Doctrine\ORM\Query::HYDRATE_OBJECT);(ডিফল্ট প্যারামিটার) স্পষ্টতই পরিচয় ফাংশন দ্বারা ওভাররাইড করা হয়।
বেগুন

আপনাকে ধন্যবাদ, যা আমাকে অবশেষে আমার নির্বাচন বাছাই করতে সাহায্য করেছে (নির্বাচন করুন)!
ইমেসব্যাঙ্ক

4
এই কাজ করে ক্যোয়ারী রচয়িতা ব্যবহার করছে: $qb->select('identity(c.parent)')
scyrma

টেবিলগুলি বিশাল হলে এটি দুর্দান্ত। মুল বক্তব্যটি হ'ল আপনি অযৌক্তিক কিছু হাইড্রেট করতে চান না এবং আপনি অবশ্যই বিশাল টেবিলের মধ্যে কোনও যোগ দিতে চান না। আপনি কেবল বিদেশী কী এর আইডি পেতে চান এবং তারপরে সেগুলি একটি পৃথক ক্যোয়ারিতে ব্যবহার করতে চান।
মিরো লেহনটেন


5

আপনি যোগ করা হয়নি এমন একটি উপাদান নির্বাচন করছেন। অন্য উত্তরে যেমন বলা হয়েছে, আপনাকে কিছু করতে হবে:

qb->innerJoin("c.parent", "p")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.