ক্যাসকেড = {"অপসারণ"} ভিএস অনাথ রিমোভাল = সত্য ভিএস অনডিলিট = "ক্যাসকেড


94

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

আমি তৃতীয়টি সম্পর্কে কিছুটা বিভ্রান্ত হয়েছি : অনডিলিট = "ক্যাসকেড" , কারণ এই সম্পর্কে তত্ত্বীয় অফিসিয়াল ডকুমেন্টেশনের ব্যাখ্যা হিসাবে খুব দুষ্প্রাপ্য) এবং আমি যদি আমার নীচের তথ্য সংগ্রহ করেছি এবং আমার গবেষণা থেকে বুঝতে পেরে কেউ পছন্দ করতে পারে নেট এবং অভিজ্ঞতা ...

এর মানে কি

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

orphanRemoval = সত্য
==> বিপরীত দিকের সত্তাটি যখন স্বত্বের পাশের সত্তা থাকে তখন মুছে ফেলা হয় এবং এটি অন্য কোনও নিজস্ব পক্ষের সত্তার সাথে সংযুক্ত থাকে না। (রেফ। মতবাদ অফিসিয়াল_ডোক -
ওআরএম বাস্তবায়ন - ওয়ানটওন, অনেটোম্যানি বা ম্যান্টিটোম্যানির সাথে ব্যবহার করা যেতে পারে

onDelete = "CASCADE"
==> এটি ডাটাবেসে বিদেশী কী কলামে অনুলিপি ক্যাসকেড যুক্ত করবে
- সঠিকভাবে ডান পেতে এই কৌশলটি কিছুটা জটিল তবে খুব শক্তিশালী এবং দ্রুত হতে পারে। (রেফ। তত্ত্বের আধিকারিক_ডোক ... তবে আরও ব্যাখ্যা পড়েনি)
- ওআরএমকে কম কাজ করতে হবে (আগের দুটি পদ্ধতি করার তুলনায়) এবং সুতরাং আরও ভাল পারফরম্যান্স করা উচিত।

অন্যান্য তথ্য
- এই 3 টি উপায়ের দ্বিদ্বীপেক্ষ সম্পর্কের সত্তা ( ডান ??? ) প্রয়োগ করা হয়েছে
- ক্যাসকেড = {"রিমুভ" ব্যবহার করে} যে কোনও বিদেশী কী পুরোপুরি বাই-পাস দিয়েডিলিট = ক্যাসকেডে। (রেফারেন্স মতবাদ_অফিশিয়াল_ডোক )

কোডে এটি কীভাবে ব্যবহার করা যায় তার উদাহরণ দিন

  • orphanRemoval এবং ক্যাসকেড = remove "সরান"} বিপরীত সত্তা শ্রেণিতে সংজ্ঞায়িত করা হয়।
  • ondelete = "CASCADE" মালিক সত্তায় সংজ্ঞায়িত করা হয়
  • আপনি কেবল @ ওআরএম Col জয়েন্টকলোম (অনডিলিট = "ক্যাসকেড") লিখতে পারেন এবং মতবাদটি কলামের নামগুলি পরিচালনা করতে দেয়

ক্যাসকেড = {"অপসারণ"}

/**
* @OneToMany(targetEntity="Phonenumber", mappedBy="contact", cascade={"remove"})
*/
protected $Phonenumbers

orphanRemoval = সত্য

/**
* @OneToMany(targetEntity="Phonenumber", mappedBy="contact", orphanRemoval=true)
*/
protected $Phonenumbers

অনডিলিট = "ক্যাসকেড"

/** 
* @ManyToOne(targetEntity="Contact", inversedBy="phonenumbers")
* @JoinColumn(name="contact_id", referencedColumnName="contact_id", onDelete="CASCADE")
*/ 
protected $contact; 

4
এটি একটি ভাল ব্যাখ্যা রয়েছে stackoverflow.com/questions/25515007/...
Gregsparrow

উত্তর:


63

onDelete="CASCADE"ডাটাবেস নিজেই পরিচালিত হয়। cascade={"remove"}মতবাদ দ্বারা পরিচালিত হয়।

onDelete="CASCADE"তাত্পর্যপূর্ণ হয় কারণ মতবাদের পরিবর্তে অপারেশনগুলি ডাটাবেস স্তরে সম্পাদিত হয়। অপসারণটি ডাটাবেস সার্ভার দ্বারা সম্পাদিত হয় এবং মতবাদ নয়। cascade={"remove"}মতবাদের সাথে সত্তাকে নিজেই পরিচালনা করতে হবে এবং এটির অন্য কোনও নিজস্ব সত্তা নেই কিনা তা দেখার জন্য অতিরিক্ত চেক সঞ্চালন করবে। অন্য কোনও উপস্থিতি যখন এটি সত্তা মুছবে। কিন্তু এটি ওভারহেড তৈরি করে।


ক্যাসকেড = {"অপসারণ"}

  • বিপরীত দিকের সত্তাটি যখন নিজস্ব পাশের সত্তা থাকে তখন মোছা হয়। এমনকি যদি আপনি অন্য মালিকানাধীন পাশের সত্তার সাথে বহুস্তরে থাকেন। না, সত্তা যদি অন্য কোনও কিছুর মালিকানাধীন থাকে। এটি মুছে ফেলা হবে না।
  • সংগ্রহের জন্য ব্যবহার করা উচিত (সুতরাং ওয়ানটোম্যানি বা ম্যান্টিটোম্যান সম্পর্কের ক্ষেত্রে)
  • ওআরএম বাস্তবায়ন

orphanRemoval = "সত্য"

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

অনডিলিট = "ক্যাসকেড"

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

4
@ ওয়াঘলস ক্যাসকেড সম্পর্কে আপনার মন্তব্য সম্পর্কে = {"অপসারণ"} ==> সত্তা নিবন্ধ এবং বিভাগের মধ্যে আমার অনেকগুলি সম্পর্ক রয়েছে। আমি যখন কোনও নিবন্ধ ($ em-> মুছে ফেলুন ($ নিবন্ধ);) সরিয়ে ফেলি যখন এটি বিভাগগুলি অন্য নিবন্ধের সাথে লিঙ্কযুক্ত থাকে তবে এটি এই নিবন্ধটি EVEN এর সাথে লিঙ্কযুক্ত সমস্ত বিভাগ সরিয়ে ফেলবে। সুতরাং আমি বলব যে এটি আপনার লেখার মতো আচরণ করে না।
অ্যালেক্সিস_ডি

4
@ ওয়াঘলস অনাথআরমোভাল সম্পর্কে আপনার মন্তব্য সম্পর্কে = "সত্য" আমার লেখা বাক্যটি "বিপরীত দিকের সত্তাটি যখন মালিকানাধীন পাশের সত্তা হয় তখন মুছে ফেলা হয়, এবং এটি অন্য কোনও সত্তার নিজস্ব নয়" মতবাদ অফিসিয়াল পৃষ্ঠা থেকে উদ্ধৃত হয়েছে। মতবাদ = অনাথ্রমোভাল
অ্যালেক্সিস_ডি

4
@ অ্যালেক্সিস_ডি, আপনার মন্তব্যের সাথে সম্পূর্ণরূপে একমত হলেন উত্তরটি ভুল এবং নবীনদের জন্য সত্যই বিভ্রান্তিকর হতে পারে
স্টেপান ইউদিন

4
আমি যে পরিষ্কার উদাহরণগুলি পড়েছি তার মধ্যে একটি: gist.github.com/pylebecq/f844d1f6860241d8b025
ভিক্টর এস

@ উইক্টরস এর লিঙ্কটি খুব স্পষ্ট। আমি এখন আর মতবাদ নিয়ে কাজ করছি না তাই অনুভব করুন যে আমার উত্তরটি কীভাবে কাজ করে তা না জেনে আমি আপডেট করতে পারি না। যদি কেউ আমার উত্তর আপডেট করতে পারে তবে দুর্দান্ত হবে।
ওয়াঘলস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.