ড্রশ কোনও প্রদত্ত সামগ্রী ধরণের নোড মুছতে সক্ষম কিনা তা কেবল ভাবছেন।
কিছুটা এইরকম: $ drush delete-node --type=MyContentType
যদি সম্ভব না হয়, আমি কি এমন পদ্ধতি তৈরি করতে পারি ?
ড্রশ কোনও প্রদত্ত সামগ্রী ধরণের নোড মুছতে সক্ষম কিনা তা কেবল ভাবছেন।
কিছুটা এইরকম: $ drush delete-node --type=MyContentType
যদি সম্ভব না হয়, আমি কি এমন পদ্ধতি তৈরি করতে পারি ?
উত্তর:
আপনি নিম্নলিখিত মত একটি ফাংশন তৈরি করতে পারে:
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
ক্যোয়ারীও ব্যবহার করতে পারেন , তবে আপনি সত্তার সাথে কাজ করছেন এমনটি দেখে মনে হচ্ছে এটিটিফিল্ডকিউরি ব্যবহার করা আরও বুদ্ধিমান / সাধারণ-অনুশীলন ।
এটি পরিবর্তন বা যুক্তি যুক্ত করার পক্ষেও বেশ সহজ হওয়া উচিত। আপনি এটিকে খুব সহজেই কোনও ড্রশ কমান্ডে রাখতে পারেন - ড্রশ সংগ্রহস্থলে এটি কীভাবে করা যায় তার উদাহরণ রয়েছে (নীচের দিকে কমান্ডগুলি বিভাগটি পরীক্ষা করুন)।
ডিভেল মডিউলটি ইনস্টল করুন এবং সমস্ত নোড মুছতে ড্রাশ ব্যবহার করুন,
$ drush genc --kill 0 0
আপনি একটি টাইপ বিকল্পও দিতে পারেন,
$ drush genc --kill --types=article 0 0
devel_generate
মডিউল devel সঙ্গে অন্তর্ভুক্ত করা হয়, কিন্তু চাহিদার সঙ্গে সক্রিয় করা drush en devel_generate
Genc স্বাভাবিকভাবে করতে ব্যবহৃত হয় তৈরি , নোড, যাতে শেষে 0 0 নতুন কিছু তৈরি করতে না কহন হয়, এবং --kill কি ইতিমধ্যে আছে মুছে ফেলার জন্য।
আমার ধারণা আপনি নীচের কমান্ডটি ব্যবহার করে করতে পারেন can
drush node_delete <nid>
সম্পাদনা: একটি মডিউল পাওয়া গেছে যা প্রশ্নের সাথে সম্পর্কিত / কিছু করে
http://drupal.org/project/delete_all
ব্যবহার
Drush
drush delete-all
উদাহরণ: drush delete-all article
delete_all
এখনও দ্রুপাল ৮-তে পোর্ট করা হয়নি , তবে জিনক উত্তরটি কাজ করে।
এরকম কিছু কাজ করবে (অচির্তিত):
$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 অন্যান্য জিনিসের মধ্যে এগুলি নোড সংশোধন এবং মাঠের ডেটা (এবং তাদের পুনর্বিবেচনাগুলি) মুছে ফেলবে যাতে আপনার ডাটাবেসে অনাথ তথ্য না থাকে।
এই থ্রেডে কিছু ভাল ধারণা আছে। আপনি যদি কোনও প্রোগ্রামিং সত্যিই করতে না চান এবং ড্রশ ব্যবহার করতে চান তবে আপনি মুছে ফেলা সমস্ত অবদানের মডিউলটি দেখতে পারেন:
Drush সমস্ত মুছে ফেলুন উদাহরণ: সমস্ত নিবন্ধ মুছে ফেলা ড্রুপাল 7 সংস্করণে ড্রশ সমস্ত নোড, নির্দিষ্ট সামগ্রীর ধরণের নোড বা ব্যবহারকারীদের মুছুন। উদাহরণ: মুছে ফেলুন-সমস্ত নিবন্ধ সমস্ত নিবন্ধ নোড নির্বাচন করুন। সমস্ত ধরণের মুছে ফেলুন নোড মুছে ফেলুন ush সব ধরণের মুছে ফেলা মুছে ফেলা - রিসেট সমস্ত ধরণের নোড মুছুন, এবং নোড, পুনর্বিবেচনা এবং মন্তব্য কাউন্টার পুনরায় সেট করুন। মুছে ফেলা সমস্ত ব্যবহারকারী মুছুন। বিকল্প: নোড, রিভিশন এবং মন্তব্য সারণীর জন্য রিসেট রিসেট কাউন্টার। --roles ভূমিকা বাছাই উপনাম: দা
ভিবিওতে ড্রশ ইন্টিগ্রেশন রয়েছে। নোডগুলির একটি ভিবিও ভিউ তৈরি করুন, এটি ড্রশ (ব্যবহার করে drush vbo-execute
) এর মাধ্যমে চালিত করুন , নোড প্রকারটি আর্গুমেন্ট হিসাবে পাস করুন।
আপনি একটি ড্রশ স্ক্রিপ্টও তৈরি করতে পারেন (আসুন যাক একে "বাল্ক_ডিলেট.এফপি" বলা হয় এবং এটি ড্রুপাল রুট ফোল্ডারের নীচে স্থাপন করা হয়):
#!/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
?
দ্রুপাল 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);
নির্দিষ্ট সামগ্রীর ধরণের সমস্ত নোড মুছতে, আপনি নিম্নলিখিত আদেশটি ড্রাশের মাধ্যমে চালানোর চেষ্টা করতে পারেন:
drush eval '$res = (new EntityFieldQuery)->entityCondition("entity_type", "node")->entityCondition('bundle', 'MyContentType')->execute(); entity_delete_multiple("node", array_keys(reset($res)));'
যেখানে মাই কনটেন্টটাইপ হ'ল আপনার মেশিনের সামগ্রীর ধরণের নাম (যেমন পৃষ্ঠা)।
পৃথক নোডের জন্য:
$ drush php-eval 'node_delete($node->nid);'
ড্রপ পিএইচপি-ইভাল
ড্রুপাল বুটস্ট্র্যাপিংয়ের পরে নির্বিচারে পিএইচপি কোডটি মূল্যায়ন করুন
@ টেনারব দ্বারা সরবরাহিত উত্তর আপডেট করা।
দ্রুপাল 8 এ
drush eval '$nids = \Drupal::entityQuery('node')->execute(); $storage = Drupal::entityTypeManager()->getStorage('node'); $e = $storage->loadMultiple($nids); $storage->delete($e);'
তুমি ব্যবহার করতে পার
drush node_delete NID
নির্দিষ্ট নোড মোছার জন্য, তবে আপনি যদি সামগ্রীর ধরণের মাধ্যমে সমস্ত নোড মুছতে চান তবে আমার ধারণা আপনি ব্যাচ এপিআই ব্যবহার করে কোনও ড্রাশ প্লাগইন তৈরি করতে পারেন।
আপনি ডভল দিয়ে কোনও প্রদত্ত সামগ্রীর ধরণের নোডগুলি মুছতে পারবেন বলে উত্তর হিসাবে আপনি ডভিল মডিউলটি দিয়ে এটি করতে পারেন?
ডিভেল মডিউলটি ইনস্টল করুন এবং সমস্ত নোড মুছতে ড্রাশ ব্যবহার করুন,
$ ড্রাশ জেনক - কিল 0 0
আপনি একটি টাইপ বিকল্পও দিতে পারেন,
$ ড্রাশ জেনক - কিল - টাইপস = নিবন্ধ 0 0