আমি কি ড্রশ দিয়ে কোনও প্রদত্ত সামগ্রী ধরণের নোডগুলি মুছতে পারি?


13

ড্রশ কোনও প্রদত্ত সামগ্রী ধরণের নোড মুছতে সক্ষম কিনা তা কেবল ভাবছেন।

কিছুটা এইরকম: $ drush delete-node --type=MyContentType

যদি সম্ভব না হয়, আমি কি এমন পদ্ধতি তৈরি করতে পারি ?

উত্তর:


4

আপনি নিম্নলিখিত মত একটি ফাংশন তৈরি করতে পারে:

function MYMODULE_delete_all_the_things() {
  $query = new EntityFieldQuery;

  $result = $query->entityCondition('entity_type', 'node')
    ->propertyCondition('type', 'YOUR-CONTENT-TYPE')
    ->execute();

  if (isset($result['node']) && count($result['node'])) {

    $node_ids = array_keys($result['node']);

    node_delete_multiple($node_ids);
  }
}

দ্রষ্টব্য - আপনি একটি সাধারণ SELECTক্যোয়ারীও ব্যবহার করতে পারেন , তবে আপনি সত্তার সাথে কাজ করছেন এমনটি দেখে মনে হচ্ছে এটিটিফিল্ডকিউরি ব্যবহার করা আরও বুদ্ধিমান / সাধারণ-অনুশীলন ।

এটি পরিবর্তন বা যুক্তি যুক্ত করার পক্ষেও বেশ সহজ হওয়া উচিত। আপনি এটিকে খুব সহজেই কোনও ড্রশ কমান্ডে রাখতে পারেন - ড্রশ সংগ্রহস্থলে এটি কীভাবে করা যায় তার উদাহরণ রয়েছে (নীচের দিকে কমান্ডগুলি বিভাগটি পরীক্ষা করুন)।


আমি দেখতে পেয়েছি, এটি সংগ্রহস্থলের লিঙ্কের মতো শোনাচ্ছে যাতে কীভাবে সঠিকভাবে কোনও ড্রাশ পদ্ধতি যুক্ত করতে হয়।
শেফেলোন

হা! রিডমের কিছু আলাদা উপায় রয়েছে আপনি সেগুলি প্রয়োগ করতেও পারেন!
চাঁপাবু

21

ডিভেল মডিউলটি ইনস্টল করুন এবং সমস্ত নোড মুছতে ড্রাশ ব্যবহার করুন,

$  drush genc --kill 0 0 

আপনি একটি টাইপ বিকল্পও দিতে পারেন,

$  drush genc --kill --types=article 0 0

চতুর, আমি এটি পছন্দ করি।
m4olivei

3
এটি ডি 8 এর সাথে কাজ করে। devel_generateমডিউল devel সঙ্গে অন্তর্ভুক্ত করা হয়, কিন্তু চাহিদার সঙ্গে সক্রিয় করা drush en devel_generate Genc স্বাভাবিকভাবে করতে ব্যবহৃত হয় তৈরি , নোড, যাতে শেষে 0 0 নতুন কিছু তৈরি করতে না কহন হয়, এবং --kill কি ইতিমধ্যে আছে মুছে ফেলার জন্য।
উইলিয়াম টুরেল

15

আমার ধারণা আপনি নীচের কমান্ডটি ব্যবহার করে করতে পারেন can

drush node_delete <nid>

সম্পাদনা: একটি মডিউল পাওয়া গেছে যা প্রশ্নের সাথে সম্পর্কিত / কিছু করে

http://drupal.org/project/delete_all

ব্যবহার

Drush

drush delete-all

উদাহরণ: drush delete-all article


আমি বোঝাতে চাইছি সামগ্রীর ধরণ অনুসারে সমস্ত নোড মুছে ফেলতে।
শেফেলোন

আপনি এই মডিউল চেষ্টা করেছেন drupal.org/project/delete_all drush ডিলিট সব নিবন্ধ: ইউসেজ Drush ডিলিট সব উদাহরণ drush
ninjascorner

আমি কোথায় ড্রশ নোড_ডিলিট <এনআইডি> কমান্ডটি পেতে পারি?
অ্যাড্রিয়ান সিড আলমাগুয়ার

লোকদের সময় বাঁচানোর জন্য, ডিসেম্বর ২০১ of পর্যন্ত, delete_all এখনও দ্রুপাল ৮-তে পোর্ট করা হয়নি , তবে জিনক উত্তরটি কাজ করে।
উইলিয়াম তারেল


5

এরকম কিছু কাজ করবে (অচির্তিত):

$query = new EntityFieldQuery();

$entities = $query->entityCondition('entity_type', 'node', '=')
  ->entityCondition('bundle', 'Announcements')
  ->execute();

$nids = array_keys($entities['node']);

node_delete_multiple($nids);

এটি Annoucementsব্যবহার করে সামগ্রীর ধরণের সমস্ত নোডের সন্ধান করবে EntityFieldQuery()। এরপরে $nidsফলাফল থেকে সমস্ত কিছু পাওয়া যায় এবং তাদের ব্যবহার করে মুছে ফেলা হয় node_delete_multiple()

আপনি এই কোডটি নিতে পারেন, এটি একটি পৃথক পিএইচপি ফাইলে রাখতে পারেন এবং তারপরে এটিকে সম্পাদন করতে পারেন drush scr

এপিআই ব্যবহার করে নিশ্চিত করা হবে যে সমস্ত সঠিক হুক আগুন fire অন্যান্য জিনিসের মধ্যে এগুলি নোড সংশোধন এবং মাঠের ডেটা (এবং তাদের পুনর্বিবেচনাগুলি) মুছে ফেলবে যাতে আপনার ডাটাবেসে অনাথ তথ্য না থাকে।


5

এই থ্রেডে কিছু ভাল ধারণা আছে। আপনি যদি কোনও প্রোগ্রামিং সত্যিই করতে না চান এবং ড্রশ ব্যবহার করতে চান তবে আপনি মুছে ফেলা সমস্ত অবদানের মডিউলটি দেখতে পারেন:

Drush
সমস্ত মুছে ফেলুন
উদাহরণ: সমস্ত নিবন্ধ মুছে ফেলা

ড্রুপাল 7 সংস্করণে ড্রশ

সমস্ত নোড, নির্দিষ্ট সামগ্রীর ধরণের নোড বা ব্যবহারকারীদের মুছুন।

উদাহরণ:
 মুছে ফেলুন-সমস্ত নিবন্ধ সমস্ত নিবন্ধ নোড নির্বাচন করুন।
 সমস্ত ধরণের মুছে ফেলুন নোড মুছে ফেলুন ush
 সব ধরণের মুছে ফেলা মুছে ফেলা - রিসেট সমস্ত ধরণের নোড মুছুন, এবং নোড, পুনর্বিবেচনা এবং মন্তব্য কাউন্টার পুনরায় সেট করুন।
 মুছে ফেলা সমস্ত ব্যবহারকারী মুছুন।

বিকল্প:
 নোড, রিভিশন এবং মন্তব্য সারণীর জন্য রিসেট রিসেট কাউন্টার।
 --roles ভূমিকা বাছাই

উপনাম: দা

4

ভিবিওতে ড্রশ ইন্টিগ্রেশন রয়েছে। নোডগুলির একটি ভিবিও ভিউ তৈরি করুন, এটি ড্রশ (ব্যবহার করে drush vbo-execute) এর মাধ্যমে চালিত করুন , নোড প্রকারটি আর্গুমেন্ট হিসাবে পাস করুন।


আমি মনে করি এটিই আমার প্রয়োজন J মাত্র ২ টি প্রশ্ন: একটি দৃশ্য সম্পাদন করার জন্য ড্রশ পদ্ধতিটি কোনটি? এবং এই পদ্ধতিটি ব্রাউজারে দৃশ্যটি কার্যকর করার চেয়ে দ্রুততর হবে?
শেফেলোন

সঠিক ড্রাশ কমান্ড নির্দিষ্ট করতে উত্তর সম্পাদনা করা হয়েছে। এবং হ্যাঁ, এটি আরও দ্রুত হবে কারণ এইভাবে দৃশ্যটি রেন্ডার করা হয়নি।
বোজন জিভানোভিচ

1

আপনি একটি ড্রশ স্ক্রিপ্টও তৈরি করতে পারেন (আসুন যাক একে "বাল্ক_ডিলেট.এফপি" বলা হয় এবং এটি ড্রুপাল রুট ফোল্ডারের নীচে স্থাপন করা হয়):

#!/usr/bin/env drush

$res = db_delete('node')
  ->condition('type', 'mycontenttype', '=')
  ->execute();

echo "deleted:" . $res;

এটি করার জন্য এটি একেবারে দ্রুততম উপায়: ড্রপলের ফাংশনটি ডিবি_ডিলিট ব্যবহার করে ডিবিতে সরাসরি জিজ্ঞাসা

ব্যবহার:

:~# cd /var/www/www.mysite.com
:~# drush --uri=www.mysite.com scr bulk_delete.php 

ডক: https://api.drupal.org/api/drupal/includes!database!datedia.inc/function/db_delete/7

সতর্কতা: এই প্রক্রিয়াটি তাদের ক্ষেত্রগুলির ডেটা মুছবে না। যাইহোক, একই ক্ষেত্রগুলি এই ক্ষেত্রগুলিতে প্রয়োগ করা যেতে পারে (প্রতিটি ক্ষেত্রের "বান্ডেল" কলামটি দেখে)। উদাহরণ স্বরূপ:

#!/usr/bin/env drush

$field_tables = array(
  'field_data_field_body',
  'field_data_field_mycoolfield',
  'field_revision_body',
  'field_revision_field_mycoolfield'
);

foreach ($field_tables as $field_table) {
  $res = db_delete($field_table)
    ->condition('bundle', 'mycontenttype', '=')
    ->execute();

  echo "deleted:" . $res . "\n\n";
}

যেখানে "মাইক কনটেন্টটাইপ" প্রথম ক্যোয়ারীতে ব্যবহৃত হয় in


শর্ত কেন 'nid' > 5000?
Елин Й.

এটি টাইপের মতো একটি উদাহরণ।
মাউরো মাসিয়া

তবে মূল পোস্টারটিতে এ জাতীয় অবস্থার বিষয়ে উল্লেখ করা হয়নি, সে কারণেই আমি মনে করি উদাহরণটি অপ্রাসঙ্গিক, এভাবে বিভ্রান্তিকর।
Елин Й.

1

দ্রুপাল 7

নিম্নলিখিত ওয়ান-লাইনার ব্যবহার করে দেখুন, এটি ড্রপাল থেকে সমস্ত মাইকন্টেন্টটাইপ নোডগুলি সরিয়ে দেয়:

drush eval '$res = (new EntityFieldQuery)->entityCondition("entity_type", "node")->entityCondition('bundle', 'MyContentType')->execute(); entity_delete_multiple("node", array_keys(reset($res)));'

অথবা আপনি সত্তা টাইপের নামের উপর ভিত্তি করে সমস্ত সত্তা মুছে ফেলতে পারেন (যেমন নোড):

drush eval '$res = (new EntityFieldQuery)->entityCondition("entity_type", "node")->execute(); entity_delete_multiple("node", array_keys(reset($res)));'

দ্রষ্টব্য: nodeআপনার সত্তার প্রকারের নাম, প্রয়োজনে আপনি এটি পরিবর্তন করতে পারেন।


আপনি যদি স্মৃতি বা সময়সীমার ত্রুটি পেয়ে থাকেন তবে আপনি নীচের সেটগুলি ঠিক আগে যুক্ত করতে পারেন $res:

ini_set('memory_limit', -1); ini_set('max_execution_time', 0);

1

নির্দিষ্ট সামগ্রীর ধরণের সমস্ত নোড মুছতে, আপনি নিম্নলিখিত আদেশটি ড্রাশের মাধ্যমে চালানোর চেষ্টা করতে পারেন:

drush eval '$res = (new EntityFieldQuery)->entityCondition("entity_type", "node")->entityCondition('bundle', 'MyContentType')->execute(); entity_delete_multiple("node", array_keys(reset($res)));'

যেখানে মাই কনটেন্টটাইপ হ'ল আপনার মেশিনের সামগ্রীর ধরণের নাম (যেমন পৃষ্ঠা)।


1

পৃথক নোডের জন্য:

$ drush php-eval 'node_delete($node->nid);'

ড্রপ পিএইচপি-ইভাল
ড্রুপাল বুটস্ট্র্যাপিংয়ের পরে নির্বিচারে পিএইচপি কোডটি মূল্যায়ন করুন


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

1

@ টেনারব দ্বারা সরবরাহিত উত্তর আপডেট করা।

দ্রুপাল 8 এ

drush eval '$nids = \Drupal::entityQuery('node')->execute(); $storage = Drupal::entityTypeManager()->getStorage('node'); $e = $storage->loadMultiple($nids); $storage->delete($e);'

drush ev '$ প্রকার =' \ '' নোড '\' '; ইনিটি_ডিলেট_মલ્ટুপল ($ টাইপ, rup দ্রুপাল :: অ্যান্টিক্যুয়েরি ($ প্রকার) -> এক্সিকিউট ()); '
জিক-মের্লিন

একটি বিদ্যমান উত্তর আপডেট করতে, একটি সম্পাদনা পরামর্শ করতে দয়া করে একটি মন্তব্য ড্রপ করুন।
লেইম্যানেক্স

0

তুমি ব্যবহার করতে পার

drush node_delete NID নির্দিষ্ট নোড মোছার জন্য, তবে আপনি যদি সামগ্রীর ধরণের মাধ্যমে সমস্ত নোড মুছতে চান তবে আমার ধারণা আপনি ব্যাচ এপিআই ব্যবহার করে কোনও ড্রাশ প্লাগইন তৈরি করতে পারেন।


আমি ড্রশ নোড_ডিলিট এনআইডি কমান্ডটি খুঁজে পাইনি।
অ্যাড্রিয়ান সিড আলমাগুয়ার

0

আপনি ডভল দিয়ে কোনও প্রদত্ত সামগ্রীর ধরণের নোডগুলি মুছতে পারবেন বলে উত্তর হিসাবে আপনি ডভিল মডিউলটি দিয়ে এটি করতে পারেন?

ডিভেল মডিউলটি ইনস্টল করুন এবং সমস্ত নোড মুছতে ড্রাশ ব্যবহার করুন,

$ ড্রাশ জেনক - কিল 0 0

আপনি একটি টাইপ বিকল্পও দিতে পারেন,

$ ড্রাশ জেনক - কিল - টাইপস = নিবন্ধ 0 0

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