Score:1

ฉันจะสร้างคำสั่งซื้อโดยทางโปรแกรมโดยไม่ลบโปรไฟล์ได้อย่างไร

ธง eg

ฉันตาม คำสั่งซื้อ เพื่อเขียนโค้ดต่อไปนี้

$order = \Drupal\commerce_order\Entity\Order::create([
  'type' => 'custom_order_type',
  'state' => 'แบบร่าง',
  'เมล' => '[email protected]',
  'uid' => 1,
  'ip_address' => '127.0.0.1',
  'order_number' => '6',
  'billing_profile' => $โปรไฟล์,
  'store_id' => $store->id(),
  'order_items' => [$order_item],
  'วาง' => เวลา (),
]);

$โปรไฟล์ เป็นโปรไฟล์ผู้ใช้

จากนั้นฉันเปลี่ยนสถานะคำสั่งซื้อโดยทางโปรแกรมเป็น สถานที่ กับ $order->getState()->applyTransitionById('สถานที่');.

มีการสั่งซื้อและทุกอย่างดูดียกเว้นว่าสมุดที่อยู่ของผู้ใช้จะว่างเปล่า ฉันคิดว่าฉันก้าวพลาด

มีวิธีรักษาสมุดที่อยู่ในขณะที่ทำการสั่งซื้อหรือไม่?

Score:3
ธง it

โปรไฟล์ไม่ได้ถูกลบ - เป็นเพียงการ "เป็นเจ้าของ" โดยคำสั่งซื้อ สิ่งนี้เกิดขึ้นใน สั่งซื้อ::บันทึกล่วงหน้า() โดยที่โปรไฟล์ uid ถูกตั้งค่าเป็น 0 ซึ่งจะทำให้มั่นใจได้ว่าลูกค้าจะไม่สามารถใช้อินเทอร์เฟซสมุดที่อยู่เพื่อแก้ไขโปรไฟล์ที่อ้างอิงโดยคำสั่งซื้อได้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของสมุดที่อยู่ใน Commerce 2.x เกี่ยวกับการคัดลอกโปรไฟล์ โปรดดูบทความ:

https://www.centarro.io/blog/understanding-drupal-commerce-2x-address-book

วิธีแก้ไขคือให้คุณสร้างสำเนาของโปรไฟล์ด้วยตัวเอง ตั้งค่า uid เป็น 0 และอ้างอิงโปรไฟล์นั้นจากคำสั่งซื้อของคุณแทนต้นฉบับ

Aves2432 avatar
eg flag
ขอบคุณ สิ่งนี้ช่วยแก้ปัญหาของฉันได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา