প্রোগ্রামিয়ালি একটি সত্তা রেফারেন্স ক্ষেত্র আপডেট করুন


23

আমি জানি যে নিম্নলিখিতগুলির মতো কোড সহ আমি দ্রুপাল 7 এ সত্তা রেফারেন্স ফিল্ডটি আপডেট করতে (বা এর জন্য একটি মান নির্ধারণ করতে) পারি।

 $node['field_code_used_by'][LANGUAGE_NONE][0]['target_id'] = $id;

আমি ড্রুপাল 8-এ আমার ব্যবহারকারী সত্তার রেফারেন্স ফিল্ডের জন্য প্রোগ্রামগতভাবে একটি মান সেট করতে চাই।

আমি চেষ্টা $node->field_code_used_by->setValue(1);এবং $node->field_code_used_by->entity->value = 1;কিন্তু তাদের কেউই কাজ করেন।

আমি কীভাবে কোনও সত্তা রেফারেন্স ক্ষেত্রের জন্য মানটি সেট করতে পারি?

উত্তর:


31

আপনাকে নিম্নলিখিতগুলির মতো কোড ব্যবহার করতে হবে।

    $node = Node::load($nid);     
    $node->field_code_used_by->target_id = $user_id;
    $node->save();

একাধিক-মান ক্ষেত্রের জন্য, তালিকাটির শেষে মান যুক্ত করতে নিম্নলিখিত কোডটি ব্যবহার করুন।

$node->field_code_used_by[] = ['target_id' => $user_id];

অন্য entityকোডটি নীচের কোডের মতো সত্তা অবজেক্টের সাথে সম্পত্তি নির্ধারণ করছে following

    $node = Node::load($nid);
    $user = \Drupal\user\Entity\User::load(1);
    $node->field_code_used_by->entity = $user;
    $node->save();

2
প্যারেন্ট নোড ইতিমধ্যে উপস্থিত না থাকলে এটি কাজ করবে বলে মনে হয় না। যখন একটি নতুন, সংরক্ষিত পিতাম নোডকে টার্গেট_আইডি বা সত্তা সম্পত্তি অর্পণ করার সময়, সম্পর্কটি সংরক্ষণ করা হয় না। (কোনও NULL সত্তা রেফার্ড ফিল্ডে অর্পণ করার সময়ও সম্ভবত কাজ করে না, তবে আমি এটি পরীক্ষা করি নি)) কেহ জানেন কীভাবে এই মামলাটির সমাধান করা যায়?
aaronbauman

@ অ্যারনবাউমান আপনি কি এর কোন সমাধান পেয়েছেন?
প্রতিধ্বনি

@ এইচো আমি কীভাবে বা এর আশেপাশে কাজ করেছি তা মনে নেই don't আমার আচরণের বর্ণনাটি যদি সঠিক হয় তবে এটি একটি বাগ। যদি এর জন্য
ড্রুপাল.আরজে

@aaronbauman drupal.org/project/paragraphs/issues/2707017#comment-11872624 আমাকে সাহায্য নতুন নোডের সাথে যে কাজ করা। সুতরাং একটি বাগ বলে মনে হচ্ছে না।
প্রতিধ্বনি

11

ডি 7 এর মতো ডি 8-তে একটি রেফারেন্স ফিল্ডের মূল সম্পত্তিটি এখনও target id:

$node->field_code_used_by->target_id = $user_id;

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

মাল্টিভ্যালু ক্ষেত্র

একটি মাল্টিভ্যালু ক্ষেত্রে একটি আইটেম যুক্ত করুন:

$node->field_code_used_by[] = ['target_id' => $user_id];

সম্পত্তিটি target_idপ্রয়োজনীয় নয়, কারণ এটি মূল সম্পত্তি এবং এটি ডিফল্টরূপে ব্যবহৃত হয়। সুতরাং বেশিরভাগ ক্ষেত্রের জন্য আপনি একটি সাধারণ পিএইচপি অ্যারের মতো একটি মান যুক্ত করতে পারেন যা মনে রাখা সহজ:

$node->field_code_used_by[] = $user_id;

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