มีวิธีใดdb_update()
สำหรับการสืบค้นต่อไปนี้?
UPDATE field_data_field_TEST as ft
left join node as n on ft.entity_id = n.nid
set n.type='test'
where n.type='foo'
ฉันลองใช้db_update()->join();
แต่ใช้ไม่ได้
มีวิธีใดdb_update()
สำหรับการสืบค้นต่อไปนี้?
UPDATE field_data_field_TEST as ft
left join node as n on ft.entity_id = n.nid
set n.type='test'
where n.type='foo'
ฉันลองใช้db_update()->join();
แต่ใช้ไม่ได้
คำตอบ:
db_update()
ไม่ได้ใช้อินเทอร์เฟซใด ๆ ที่มีjoin()
/ innerJoin()
/ ฯลฯ วิธีการดังนั้นฉันคิดว่าคุณติดกับการใช้db_query()
และการเขียนสตริงแบบสอบถามออกด้วยตนเอง
$sql = "
UPDATE field_data_field_TEST as ft
left join node as n on ft.entity_id = n.nid
set n.type = :type1
where n.type = :type2";
$args = array(':type1' => 'test', ':type2' => 'foo');
db_query($sql, $args);
db_query()
ที่มีอยู่ก็เป็นที่ยอมรับอย่างสมบูรณ์กับการใช้งาน หากคุณต้องการติดเอกสารอย่างเข้มงวดจากนั้นตรวจสอบว่ามีเงื่อนไขกับแบบสอบถามย่อยจะเป็นตัวเลือก แต่อย่างที่คุณบอกว่ามันจะมีประสิทธิภาพน้อยกว่าและสำหรับฉันแล้วก็ไม่ได้ลดลง 'ดีกว่า' มากกว่าการใช้คำสั่ง SQL แบบตรง
Update
ไม่ได้ใช้join
ฟังก์ชั่นใด ๆแต่ยังต้องใช้การสืบค้นทั่วไปสำหรับกรณีนี้