ট্যাক্সনোমির শর্তে একাধিক শর্তযুক্ত অ্যান্টিক্যুয়েরি কোনও ফল দেয় না


13

আমার ব্যবহারের ক্ষেত্রে আমার একটি সত্তা রয়েছে যার দুটি ক্ষেত্র অনন্য শব্দের জন্য উল্লেখ রয়েছে।

সংবাদ: - ট্যাগ (সত্তা রেফারেন্স) - বিভাগ (সত্তা রেফারেন্স)

যদি আমি সেই রেফারেন্সগুলির মধ্যে একটিতে জিজ্ঞাসা করি তবে আমি ফলাফলগুলি পাই যখনই আমি উভয়কে জিজ্ঞাসা করি (একটি এবং ফিল্টার) আমি কোনও ফল পাই না। আমি এখনই এটি ট্রিপল-চেক করেছি এবং এমন সত্ত্বা রয়েছে যাতে আমি জিজ্ঞাসা করছি এমন ট্যাগ এবং বিভাগ উভয়ই রয়েছে।

এটি কি কোনও ব্যবহারকারী-ত্রুটি বা একটি ড্রুপাল বাগ?

$query = \Drupal::entityQuery('node')
    ->condition('status', 1)
    ->condition('type', 'news')
;
$group = $query->andConditionGroup()
    ->condition('field_tag.entity.name', ['cars'], 'IN')
    ->condition('field_category.entity.name', ['sport'], 'IN')
;
$query->condition($group);
$nids = $query->execute();

সম্পাদনা: সত্তা.মূল্যের পরিবর্তে কাঁচা মান অনুসন্ধান করে আমি একটি কাজ খুঁজে পেয়েছি। যদিও এটি একটি অনাকাঙ্ক্ষিত পরিস্থিতি

$query = \Drupal::entityQuery('node')
    ->condition('status', 1)
    ->condition('type', 'news')
;
$group = $query->andConditionGroup()
    ->condition('field_tag.entity.name', ['cars'], 'IN')
    ->condition('field_category', [1], 'IN')
;
$query->condition($group);
$nids = $query->execute();

EQ- এর ডিফল্ট সংমিশ্রণটি হ'ল (এবং আপনি এটি পরিবর্তন করতে পারেন) সুতরাং একসাথে গোষ্ঠীকরণের শর্তে কোনও ভুল নেই ... এজন্য এটি সেখানে রয়েছে। বুঝতে পারছি না তুমি কী আশা করেছ?

উত্তর:


8

আপনি এটি করতে না পারার কারণ হ'ল এই ক্ষেত্র দুটিই একই সত্তার সত্তা রেফারেন্স। তার মানে বেস টেবিল একই বেস টেবিল।

আপনি দ্রুপালকে নোড টেবিলে ট্যাক্সোনমি_ডাটা টেবিলে যোগ দিতে এবং তারপরে একটি অসম্ভব এবং শর্ত তৈরি করতে বলছেন।

পুনশ্চ

আপনি condition('field_tags', 1);পরিবর্তে ব্যবহার করতে পারেনcondition('field_tags', [1], 'IN');

এবং মন্তব্যে উল্লিখিত হিসাবে, ও শর্ত গ্রুপটি ডিফল্ট, সুতরাং আপনার এটি নির্দিষ্ট করার দরকার নেই।

PPS

আপনার উভয় শর্তাদির সাথে সঙ্গতিপূর্ণ হতে রেফারেন্স আইডি ব্যবহার করা উচিত।


1
এই উত্তরটি সত্তা কোয়েরি কীভাবে কাজ করতে পারে তার একটি নির্লজ্জ কল্পনা জুড়ে। এটি অবশ্য এর থেকে অনেক বেশি সক্ষম। আমার উত্তর পরীক্ষা করে দেখুন।

3

একটি বন্য, অরক্ষিত অনুমান:

$query = \Drupal::entityQuery('node')
  ->condition('status', 1)
  ->condition('type', 'news');

$query = $query->condition($query->andConditionGroup()->condition('field_tag.entity.name', ['cars'], 'IN'))
  ->condition($query->andConditionGroup()->condition('field_category.entity.name', ['sport'], 'IN'));

যদি এটি কাজ না করে তবে পরের সপ্তাহে আমাকে আইআরসি # ড্রুপাল-অবদানের সন্ধান করুন এবং আমরা এটির শেষে যাব।


এটি দ্রুপাল কোরে স্থির করা উচিত তবে উপরের সমাধানটি কাজ করে।
মিঃ বি

1

আসলে আমি এটির জন্য একটি হ্যাক পেয়েছি। আমি যা পেয়েছি তার আমার ব্যাখ্যা এখানে:

আমার কন্টেন্টে আমার কাছে 3 টি ক্ষেত্র রয়েছে এবং প্রত্যেকটি বিভিন্ন শব্দভাণ্ডার থেকে একটি শুল্কের শব্দটির রেফারেন্স ধারণ করে। এবং আমি সেই তিনটি ক্ষেত্রে (একটি এবং শর্ত) এর প্রতিটিতে একটি নির্দিষ্ট শ্রেণীবদ্ধের পদ আছে যার জন্য সত্তাগুলি জিজ্ঞাসা করতে চেয়েছিলাম।

অভ্যন্তরীণ এসকিউএল কোয়েরি যা বিভিন্ন অবস্থার বিভিন্ন সংমিশ্রনের পরে উত্পাদিত হয়েছে তা আমি খুঁজে পেয়েছি checking

[Previous conditions] AND (taxonomy_term__[taxonomy_term_field_name] IN  (:db_condition_placeholder_2)) AND (taxonomy_term__[taxonomy_term_field_name] IN  (:db_condition_placeholder_3)) AND (taxonomy_term__[taxonomy_term_field_name] IN  (:db_condition_placeholder_4))

মূলত আপনি দেখতে পাচ্ছেন যে, এটি নির্দিষ্ট শব্দভাণ্ডার ব্যবহার করে প্রকৃত স্বতন্ত্র ক্ষেত্রগুলির কোনও রেফারেন্স নেই, তাই আমার হ্যাকটি এরকম কিছু করা:

 $query = \Drupal::entityQuery('node')
            ->condition('status', '1')
            ->condition('type', $content_type_machine_name)
            ->condition('field_holding_term_ref.entity.name', array($label_of_term_in_field1, $label_of_term_in_field2, $label_of_term_in_field3), 'IN');

আবার এটি কাজ করে, আমি এটি পরীক্ষা করেছি এবং এটি 3 শৃঙ্খলা শর্তাদির সাথে কেবলমাত্র বিষয়বস্তুর টাইপ ফেরত দেওয়ার শর্ত হিসাবে কাজ করে এমনকি সেই শ্রেণিবদ্ধ শর্তাদি উল্লেখগুলি বিষয়বস্তুর ধরণে বিভিন্ন ক্ষেত্রে সংরক্ষণ করা হয়।

আমি হ্যাকের জন্য গর্বিত নই তবে এটি কাজ করে, সুতরাং এটি যদি কারওর কোনও সময় বাঁচাতে সহায়তা করে তবে এটির জন্য যান।

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