ฉันมีเอนทิตีแบบกำหนดเองพร้อมฟิลด์ที่กำหนดดังนี้
$fields['file'] = BaseFieldDefinition::create('ไฟล์')
->setDescription('อ้างอิงถึงประเภทเอนทิตีไฟล์หลักในตัว')
->setLabel('ไฟล์')
-> setRequired (จริง)
->setSetting('file_extensions', 'pdf rtf doc docx')
->setSetting('max_filesize', '20MB')
->setSetting('description_field', จริง)
->setDisplayOptions('รูปแบบ', ['ประเภท' => 'ไฟล์'])
->setDisplayOptions('ดู', ['ประเภท' => 'ไฟล์']);
ฉันไม่มีปัญหาในการไปที่ฟิลด์ของการอ้างอิง ไฟล์
เอนทิตีจากอินสแตนซ์ประเภทเอนทิตีของฉันเอง ตัวอย่างเช่น เส้นเหล่านี้ทำงานตามที่คาดไว้
$filename = $my_entity->file->entity->ชื่อไฟล์->value;
$ชื่อผู้ใช้ = $my_entity->file->entity->uid->entity->name->value;
เมื่อฉันพยายามใช้ฟิลด์ของการอ้างอิง ไฟล์
เอนทิตีกับ จัดเรียงตาราง
ซึ่งฉันต้องการเสียบเข้ากับแบบสอบถามเอนทิตีในประเภทเอนทิตีที่กำหนดเองของฉัน โค้ดแสดงข้อยกเว้น
$ส่วนหัว['ชื่อ'] = [
'data' => 'ชื่อไฟล์',
'field' => 'file.entity.filename',
'specifier' => 'file.entity.filename',
];
$ส่วนหัว['ผู้ใช้'] = [
'data' => 'อัปโหลดโดย',
'field' => 'file.entity.uid.entity.name',
'ตัวระบุ' => 'ไฟล์.entity.uid.entity.name',
];
// â¦
$query->tableSort($ส่วนหัว);
Uncaught ข้อยกเว้น PHP Drupal\Core\Entity\Query\QueryException: "ไม่พบ 'ไฟล์'"
สำหรับไวยากรณ์ของ $ส่วนหัว
อาร์เรย์ฉันอาศัยเบาะแสที่ฉันได้รับเป็นส่วนใหญ่ จัดเรียงตารางด้วย EntityQueryซึ่งเบอร์เดียร์แนะนำให้เราดูที่ โหลด ()
และ สร้างส่วนหัว ()
วิธีการของ ตัวสร้างรายการผู้ใช้
ระดับ. น่าเสียดายที่ตัวอย่างนั้นดูเหมือนจะใช้ค่าฟิลด์ซึ่งจัดเก็บโดยตรงในตารางฐาน ดังนั้นฉันจึงถอยกลับไปใช้สมมติฐานที่ว่า เนื่องจากเราอยู่ในพื้นที่คิวรีของเอนทิตี ไวยากรณ์เดียวกันที่อธิบายไว้ใน QueryInterface::condition()
คาดว่าจะ
ฉันได้ดูประเด็นที่เปิดอยู่จำนวนหนึ่งเช่น การจัดเรียงตารางละเว้น "เขตข้อมูล" เพิ่มชื่อส่วนหัวเป็นพารามิเตอร์การค้นหาคำสั่งซื้อเสมอ และ การล้างข้อมูลแบบเรียงตารางแต่ฉันไม่เห็นสิ่งใดที่ให้ความกระจ่างเกี่ยวกับปัญหา