ฉันกำลังพยายามสร้างตัวกรองมุมมองที่กำหนดเองและในวิธีการสืบค้น ฉันต้องสร้างการรวมนี้
เข้าร่วมซ้าย รายการ node__field_list บน node_field_data.nid = list.entity_id
และ list.deleted = 0
และ (list.langcode = node_field_data.langcode หรือ list.bundle IN ('option_1','option_2'))
การใช้เอกสารสำหรับ Viewsเข้าร่วมตัวจัดการ
ฉันสามารถสร้างการรวมได้ แต่ฉันไม่สามารถสร้างเงื่อนไขใหม่ในคุณสมบัติ "พิเศษ" ตามที่เอกสารแนะนำ
$table = 'node_field_data';
$related_content = ['ตัวเลือก_1','ตัวเลือก_2'];
$extra = "cc.deleted = 0 AND (cc.langcode = node_field_data.langcode OR cc.bundle IN ('" .implode("','", $related_content) . "'))";
$join_definition = [
'ตาราง' => 'node__field_list',
'field' => 'entity_id',
'left_table' => $ตาราง,
'left_field' => 'นิด',
'ตัวดำเนินการ' => '=',
'พิเศษ' => $พิเศษ,
];
$join = Views::pluginManager('join')->createInstance('มาตรฐาน', $join_definition);
$this->query->addRelationship('cc', $join, $table);
เป็นไปได้ไหมที่จะเพิ่มเงื่อนไข "พิเศษ" เป็นข้อความค้นหาดั้งเดิมด้วยวิธีที่แสดงในเอกสารประกอบ โดยคำนึงถึงวงเล็บและเงื่อนไข OR
$table = 'node_field_data';
$related_content = ['ตัวเลือก_1','ตัวเลือก_2'];
$join_definition = [
'ตาราง' => 'node__field_list',
'field' => 'entity_id',
'left_table' => $ตาราง,
'left_field' => 'นิด',
'ตัวดำเนินการ' => '=',
'พิเศษ' => [
[
'field' => 'ลบ',
'ค่า' => 0,
]
[
'field' => 'langcode',
'left_field' => 'รหัสภาษา',
]
[
'field' => 'มัด',
'value' => $related_content,
'โอเปอเรเตอร์' => 'IN',
]
]
];
การรวมครั้งล่าสุดจะเพิ่มเฉพาะ AND เงื่อนไขสำหรับแต่ละองค์ประกอบในอาร์เรย์ 'พิเศษ' แต่ฉันไม่รู้ว่าฉันจะเพิ่ม OR ระหว่างสองเงื่อนไขหรือวงเล็บเพื่อจัดกลุ่มได้อย่างไร