মতবাদ এবং যৌগিক অনন্য কীগুলি


100

আমি মতবাদে সম্মিলিত অনন্য কী করতে চাই। সেগুলি আমার ক্ষেত্রগুলি:

/**
 * @var string $videoDimension
 *
 * @Column(name="video_dimension", type="string", nullable=false)
 */
private $videoDimension;

/**
 * @var string $videoBitrate
 *
 * @Column(name="video_bitrate", type="string", nullable=false)
 */
private $videoBitrate;

আমি কীভাবে মতবাদটি প্রদর্শন করতে পারি, যেগুলি একত্রে একত্রিত করা সম্মিলিত অনন্য কী?

উত্তর:


221

প্রশ্নটির উত্তর দাও:

use Doctrine\ORM\Mapping\UniqueConstraint;

/**
 * Common\Model\Entity\VideoSettings
 *
 * @Table(name="video_settings", 
 *    uniqueConstraints={
 *        @UniqueConstraint(name="video_unique", 
 *            columns={"video_dimension", "video_bitrate"})
 *    }
 * )
 * @Entity
 */

@ ইউনিককনস্ট্র্যাট দেখুন


4
তথ্যের জন্য ধন্যবাদ a একটি নোট হিসাবে, আপনি যদি নিজের প্রশ্নটি সমাধান করেন, তবে আপনি অবিলম্বে গ্রহণ করতে পারবেন না, আপনার নিজের উত্তরটি গ্রহণ করা সাধারণত ভাল ফর্ম, ঠিক তাই লোকেরা যদি অনুসন্ধান করে থাকে তবে এটি গ্রহণযোগ্য উত্তর হিসাবে দেখায়।
রিক্সিয়াস

4
-ToOneসমিতিগুলি (বিদেশী কীগুলি) দিয়ে এটি করা কি সম্ভব ?
দিমিত্রি কে

5
আমি জানি এটি পুরানো পোস্ট, তবে @ ডিমিট্রি কে এটি সম্ভব is আপনার নিজের @ ওআরএম \ জয়েন্টকলাম (নাম = "join_table_id", রেফারেন্সডক্লোননাম = "আইডি", nullable = মিথ্যা) হিসাবে কলামের নাম ব্যবহার করা দরকার। এখানে 'join_table_id' রয়েছে।
হারার

মনে রাখবেন যে আপনাকে কলামের নাম প্রদান করতে হবে , ক্ষেত্রের নাম নয়। সুতরাং আপনাকে উট কেসটিকে স্নাপকেসে রূপান্তর করতে হবে এবং সংঘের _idজন্য সংযুক্ত করতে হবে, কারণ ডক্ট্রাইন এভাবেই কলামের নাম উত্পন্ন করে।
গ্রোনস্টাজ

নামগুলি @Table(uniqueConstraints={@UniqueConstraint(columns={"case_id", "duration"})})
স্বয়ংক্রিয়ভাবে উত্পন্ন

19

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

use Doctrine\ORM\Mapping as ORM;

/**
 * VideoSettings
 *
 * @ORM\Cache(usage="NONSTRICT_READ_WRITE")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\VideoSettingsRepository")
 * @ORM\Table(name="emails", uniqueConstraints={
 *      @ORM\UniqueConstraint(name="dimension_bitrate", columns={"video_dimension", "video_bitrate"})
 * }, indexes={
 *      @ORM\Index(name="name", columns={"name"})
 * })
 */
class VideoSettings

2

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে কম্পোজিট পিকে তৈরির উপায় খুঁজতে গিয়ে আমি এটি পেরিয়ে এসেছি এবং ভেবেছিলাম এটি কিছু আপডেট ব্যবহার করতে পারে।

আপনার যা দরকার তা যৌগিক প্রাথমিক কী হলে জিনিসগুলি আসলে অনেক সহজ। (যেটি, অবশ্যই, স্বতন্ত্রতা গ্যারান্টী বা নিশ্চয়তা দিচ্ছে) মতবাদ ডকুমেন্টেশন এই URL দ্বারা কিছু চমৎকার উদাহরণ রয়েছে: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/composite-primary-keys.html

সুতরাং আসল উদাহরণটি এর মতো দেখতে পারে:

/**
 * @var string $videoDimension
 *
 * @ORM\Id @ORM\Column(type="string")
 */
private $videoDimension;

/**
 * @var string $videoBitrate
 *
 * @ORM\Id @ORM\Column(type="string")
 */
private $videoBitrate;

কয়েকটি নোট এখানে:

  1. ডক্ট্রাইন সম্পত্তি নামের উপর ভিত্তি করে এটি অনুমান করতে সক্ষম হওয়ায় কলাম "নাম" বাদ দেওয়া হয়েছে is
  2. যেহেতু videoDimensionএবং videoBitrateপিকে উভয় অংশ - তাই নির্দিষ্ট করার দরকার নেইnullable = false
  3. যদি প্রয়োজন হয় - যৌগিক পিকে বিদেশী কীগুলির সমন্বয়ে গঠিত হতে পারে, তাই কিছু আপেক্ষিক ম্যাপিং সংযোজন করতে দ্বিধা বোধ করুন

আপনি যা করেছেন তা একটি সম্মিলিত প্রাথমিক কী। অবশ্যই এটি অনন্য হয়ে উঠবে, তবে এটি একটি প্রাথমিক কী ...;)
প্রিসিয়েল

আচ্ছা হ্যাঁ, আমি মনে করি যে আমি আমার উত্তরে উল্লেখ করেছি :) আসলে ওকে-র ক্ষেত্রে "ইউনিক সূচক" শব্দটি আরও উপযুক্ত হবে যদি তিনি পিকে তৈরি করতে না চান (গ্রহণিত উত্তরটি তাই করে)। তবে যেহেতু প্রশ্নটিতে একটি অদ্ভুত শব্দ "যৌগিক অনন্য কী" রয়েছে - আমি কেন এটি একটি সংমিশ্রিত প্রাথমিক কী হিসাবে ধরে নিতে পারি না তা আমি দেখতে পাই না - আমি এই প্রশ্নটি যখন এসেছিলাম তখন কমপক্ষে এটিই আমি খুঁজছিলাম। চিয়ার্স!
স্টাস পারশিন

0

এক্সএমএল সংস্করণ:

<unique-constraints>
    <unique-constraint columns="column1,column2" name="give_some_explicit_name" />
</unique-constraints>

ডক্সে আরও বিশদ:
https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/references/xml-mapping.html#defining-indexes-or-unique-constraints

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