অবচয়: মতবাদ \ ওআরএম \ ম্যাপিং \ অ্যান্ডস্কোরনামিং স্ট্রেটজি এটিকে নম্বর না জানিয়ে সচেতন করা হয়েছে


53

আমি সিমফনি ৪.৩.৮ ব্যবহার করছি এবং আমি এইগুলি হ্রাসের কোনও তথ্য খুঁজে পাচ্ছি না:

ব্যবহারকারী অবহেলিত: মতবাদ তৈরি করা \ ওআরএম \ ম্যাপিং \ অ্যান্ডস্কোরনামিং স্ট্র্যাটেজি এটিকে নম্বর না জানিয়ে সচেতন করা হয়েছে এবং এটি মতবাদ ORM 3.0 এ সরানো হবে।

মতবাদ তৈরি করা \ ওআরএম \ ম্যাপিং \ অ্যান্ডস্কোরনামিং স্ট্রেটজি এটিকে সংখ্যা অবহিত না করে হ্রাস করা হয়েছে এবং এটি মতবাদ ORM 3.0 এ সরানো হবে।

আমি স্ট্যাকট্রেসে অনুসন্ধান করেছি এবং এটি পেয়েছি:

class UnderscoreNamingStrategy implements NamingStrategy
{
private const DEFAULT_PATTERN      = '/(?<=[a-z])([A-Z])/';
private const NUMBER_AWARE_PATTERN = '/(?<=[a-z0-9])([A-Z])/';

/**
 * Underscore naming strategy construct.
 *
 * @param int $case CASE_LOWER | CASE_UPPER
 */
public function __construct($case = CASE_LOWER, bool $numberAware = false)
{
    if (! $numberAware) {
        @trigger_error(
            'Creating ' . self::class . ' without making it number aware is deprecated and will be removed in Doctrine ORM 3.0.',
            E_USER_DEPRECATED
        );
    }

    $this->case    = $case;
    $this->pattern = $numberAware ? self::NUMBER_AWARE_PATTERN : self::DEFAULT_PATTERN;
}

এই শ্রেণিতে কনস্ট্রাক্টরকে সর্বদা প্যারাম ছাড়াই ডাকা হয়, সুতরাং A সংখ্যাআওয়্যার সর্বদা মিথ্যা।

এই শ্রেণিকে ফাইলে বলা হয় যা সিমফনি নির্ভরতা ইনজেকশন দ্বারা স্বয়ংক্রিয়ভাবে উত্পাদিত হয়েছিল, তাই আমি এটি "সম্পাদনা" করতে পারি না ...

আমি ভেবেছিলাম এটি সম্ভবত মতবাদে ছিল yam

doctrine:
orm:
    auto_generate_proxy_classes: true
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true
    mappings:
        App:
            is_bundle: false
            type: annotation
            dir: '%kernel.project_dir%/src/Entity'
            prefix: 'App\Entity'
            alias: App

তবে নম্বরটি সচেতন করার কোনও বিকল্প আমি পাইনি :(


3
কেবল একটি নতুন 4.4.0 (সবেমাত্র প্রকাশিত, হ্যাঁ) প্রকল্প তৈরি করুন এবং মতবাদটি রয়েছে yam আপনার টুইট করার চেষ্টা করুন।
Cerad

উত্তর:


111

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

যে কোনও ইভেন্টে, ৪.৩ থেকে ৪.৪ এর মধ্যে আন্ডারস্কোর নামকরণের কৌশলটির পরিষেবার নাম পরিবর্তন করা হয়েছিল।

# doctrine.yaml
orm:
  # 4.3
  naming_strategy: doctrine.orm.naming_strategy.underscore
  # 4.4
  naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware

এবং বিকাশকারীদের নাম পরিবর্তনের জন্য সতর্ক করতে অবচয় বার্তা যুক্ত করা হয়েছিল। মেসেজটি যদি সামান্য কিছুটা স্পষ্ট হয় তবে ওহ ভাল হত। সুতরাং যদি আপনি একটি বিদ্যমান অ্যাপ্লিকেশনটি 4.4 এ উন্নীত করে থাকেন এবং তারপরে অবনতি বার্তাটি দূরে সরাতে আপনাকে সম্ভবত নিজের মতবাদ.আইএমএল ফাইলটি ম্যানুয়ালি সম্পাদনা করতে হবে।

পরিবর্তনটি কেন করা হয়েছে তার জন্য আরও কিছু তথ্য (ধন্যবাদ @ জঞ্জাহ): https://github.com/doctrine/orm/blob/2.8.x/UPGRADE.md#deprecated-number-unaware-doctrineormmapping:30corenamingstrategy https: // github। কম / মতবাদ / ORM / সংস্করণ / 7855

"তারা" কেন এইভাবে জিনিসগুলি বেছে নিয়েছিল তা ও এখনও সত্য নয় তবে ওহ ভাল। আপনার সম্ভবত "বিন / কনসোল মতবাদ: স্কিমা: আপডেট --ডাম্প-এসকিএল" চালাতে চান এটি দেখতে কেবল এটি আপনার ডাটাবেস কলামের নামগুলিকে প্রভাবিত করে এবং সে অনুযায়ী সামঞ্জস্য করুন। পরিবর্তনগুলি এখন বেশ কয়েক সপ্তাহ ধরে চলে গেছে এবং পরিবর্তনটি নিয়ে প্রচুর ক্ষোভ ছড়িয়েছে বলে মনে হয় না তাই বেশিরভাগ কলামের নাম এমবেডেড নম্বর নেই বলে আমার ধারণা। এখন পর্যন্ত কমপক্ষে।


পুরানো কৌশল পরিবর্তন (ভুলভাবে) উদাহরণস্বরূপ $ একক_মিল 5 কী থেকে একক_পায়ু_এমডি 5 কী এবং নতুন এক (সঠিকভাবে) একক_পায়ু_ এমডি 5_কি। কিন্তু কোজ হ'ল বিসি পরিবর্তন, আমাদের এই সমস্ত জগাখিচুড়ি রয়েছে।
টমেক কোবিলিস্কি

@ TomekKobyliński আপনি নিজে কোড ছাড়াও কোনও ডকুমেন্টেশন খুঁজে পেতে সক্ষম হয়েছেন? তত্ত্ব 3 এলে নামকরণের কনভেনশন কেন পরিবর্তন হবে (এবং এভাবে সম্ভবত একটি ডাটাবেস স্কিমা পরিবর্তনটি বাধ্য করা হবে) তা বুঝতে এখনও লড়াই করছেন ling উভয় পদ্ধতির সমর্থন করা হবে বলে মনে হচ্ছে ঠিক।
সেরাদ

1
সুতরাং কোনও ডাটাবেস স্কিমা পরিবর্তন করার পরিবর্তে আপনাকে নিজের সত্তা ম্যাপিংগুলি ম্যানুয়ালি আপডেট করতে হবে? কোনটি খারাপ তা নিশ্চিত নয় এবং এটি কেন কেন একেবারে পরিবর্তন হয় এই প্রশ্নটির সত্যই সমাধান করে না। আরও "সঠিক" কৌশল সরবরাহে কোনও সমস্যা নেই তবে আমি এখনও বুঝতে পারি না যে মূল কৌশলটি কোনও প্রাসঙ্গিক অর্থে কেন "ভুল"।
সেরেড

1
পাশাপাশি এই অবমূল্যায়নে ডুব দেওয়ার পরে এখানে এসেছিলেন (phpunit চালিয়ে পাওয়া গেছে)। উত্তরের রেসিপি ইয়ামলে লিঙ্ক করা ভাল, কারণ এটি প্রস্তাবিত ফিক্সটির
রাভানলাক

1
@ সেরাদ মতবাদটির আপগ্রেড তথ্যটিতে কিছু আছে: github.com/doctrine/orm/blob/2.8.x/… আমি মনে করি github.com/doctrine/orm/issues/7855 প্রাসঙ্গিক সমস্যা।
জানু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.