আমি যখন কোনও পিতামাতার সত্তা মুছে ফেলা হয় তখন স্বয়ংক্রিয়ভাবে শিশু সত্তা মুছতে সেই উপায়গুলি সম্পর্কে কয়েকটি তথ্য সংগ্রহ করার চেষ্টা করেছি। মনে হয় যে সর্বাধিক সাধারণ উপায় হ'ল এই তিনটি টীকাগুলির মধ্যে একটি ব্যবহার করা: ক্যাসকেড = {"অপসারণ"} বা অনাথ অপসারণ = সত্য বা অনডিলিট = "ক্যাসকেড" ।
আমি তৃতীয়টি সম্পর্কে কিছুটা বিভ্রান্ত হয়েছি : অনডিলিট = "ক্যাসকেড" , কারণ এই সম্পর্কে তত্ত্বীয় অফিসিয়াল ডকুমেন্টেশনের ব্যাখ্যা হিসাবে খুব দুষ্প্রাপ্য) এবং আমি যদি আমার নীচের তথ্য সংগ্রহ করেছি এবং আমার গবেষণা থেকে বুঝতে পেরে কেউ পছন্দ করতে পারে নেট এবং অভিজ্ঞতা ...
এর মানে কি
ক্যাসকেড = 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;