CakePHP ค้นหาผลลัพธ์ที่ส่งคืนโดยไม่มีฟิลด์

ฉันจำเป็นต้องได้รับข้อมูล User ของฉันและเมื่อฉันโทร

$this->User->find('first', array('conditions' => array('User.id' => $user_id)));

ผลลัพธ์มีเพียงบางฟิลด์เท่านั้น

ขณะนี้ฉันได้อัปเดตสคีมาฐานข้อมูลแล้ว บนเซิร์ฟเวอร์ dev มันทำงานได้ดีและส่งคืนฟิลด์ทั้งหมด แต่บนเซิร์ฟเวอร์ที่ใช้งานจริงฟิลด์ใหม่เหล่านั้นหายไป เซิร์ฟเวอร์เหล่านั้นมีการกำหนดค่าเหมือนกันทุกประการ

ฉันได้ลองลบเนื้อหาของ app/tmp/cache/models แล้ว และฉันกำลังใช้ File engine สำหรับการแคช

ไฟล์ schema.php เป็นไฟล์ล่าสุด เนื้อหาของไฟล์ใน app/tmp/cache/models ระบุว่ามีฟิลด์เหล่านั้นอยู่ แต่ฉันไม่สามารถดึงข้อมูลเหล่านั้นบนเซิร์ฟเวอร์ที่ใช้งานจริงได้ ข้อแตกต่างเพียงอย่างเดียวคือฐานข้อมูลและระดับการดีบัก ฉันได้ลองคัดลอกฐานข้อมูลแล้วใช้กับเซิร์ฟเวอร์ dev และนั่นก็ใช้ได้ดี

ฉันไม่สามารถตั้งค่าการดีบักเป็น 2 บนเซิร์ฟเวอร์ที่ใช้งานจริงได้อย่างชัดเจน

มีใครในพวกคุณเคยประสบกับพฤติกรรมที่คล้ายกันบ้างไหม?

ป.ล. ฉันใช้ Cake 2.3.3


person Elwhis    schedule 15.05.2013    source แหล่งที่มา
comment
คุณแน่ใจหรือไม่ว่าไม่ได้รับผลลัพธ์ที่แคชไว้ หากคุณเพิ่มบันทึกใหม่ คุณได้รับบันทึกเหล่านั้นใน find หรือไม่   -  person Chris    schedule 15.05.2013
comment
ผมว่าคริสพูดถูกนะ ลบเนื้อหาของ tmp/cache/models แล้วคุณจะกลับมาใช้งานได้อีกครั้ง   -  person timstermatic    schedule 15.05.2013


คำตอบ (3)


คำตอบนั้นค่อนข้างง่ายจริงๆ ฉันต้องลบไม่เพียงแค่เนื้อหาของ app/tmp/models แต่สิ่งที่ทำให้มันใช้งานได้จริงคือการลบเนื้อหาของ app/tmp/persistent

person Elwhis    schedule 15.05.2013
comment
คุณยังสามารถเปิดการแก้ไขข้อบกพร่องได้ ซึ่งควรบังคับให้รับแคชใหม่ทุกครั้ง - person Dave; 15.05.2013
comment
ใช่ นั่นจะแก้ปัญหาได้อย่างแน่นอน แต่เนื่องจากเป็นเซิร์ฟเวอร์ที่ใช้งานจริง นี่จึงเป็นไปไม่ได้ - person Elwhis; 16.05.2013
comment
มันเป็นเพียง PHP - ตรวจสอบ ?debug=1 และ IP ที่ถูกต้อง - หากเป็นเช่นนั้น ให้ตั้งค่า debug เป็น 2 - ไม่เช่นนั้น 1...อะไรทำนองนั้น หากคุณกำลังติดต่อกับบัญชีธนาคารหรืออะไรก็ตาม นั่นอาจไม่ใช่ความคิดที่ดี แต่สำหรับเว็บไซต์ส่วนใหญ่ ฉันคิดว่ามันเหมาะสมที่สุด เนื่องจากคุณสามารถระบุปัญหาเหนือสิ่งอื่นใดได้ง่ายกว่า - person Dave; 16.05.2013

คำตอบของฉันแตกต่างจากของ @Elwhis เล็กน้อย ฉันใช้ Cake 2.4.5 สำหรับฉันไม่มีไดเรกทอรี app/tmp/models หรือ app/tmp/persistent models และ persistent ต่างก็ต่ำกว่า app/tmp/cache เช่นเดียวกับ @Elwhis การดูในไดเร็กทอรี app/tmp/cache/models พบว่ามีฟิลด์ที่ขาดหายไป ดังนั้นจึงทำให้เกิดความสับสน

เพื่อแก้ไข ฉันลบไฟล์ทั้งหมดออกจาก app/tmp/cache/persistent โปรดทราบว่าหากคุณลบไดเร็กทอรีนั้นเอง คุณจะได้รับข้อผิดพลาด 500 จาก CakePHP

ฉันขอแนะนำให้เพิ่มการลบไฟล์ในไดเร็กทอรีนั้นในกระบวนการปรับใช้ของคุณ

person Tyler Collier    schedule 11.04.2014

Elwhis: จริงๆ แล้วคำตอบนั้นค่อนข้างง่าย ฉันต้องลบไม่เพียงแค่เนื้อหาของ app/tmp/models แต่สิ่งที่ทำให้มันใช้งานได้จริงคือการลบเนื้อหาของ app/tmp/persistent

สิ่งนี้ยังคงใช้ได้กับ CakePHP 3 มันแก้ไขปัญหาของฉันได้!

อัปเดต 1

มีวิธีง่ายๆ ในการล้างแคชด้วย Bake CLI Tool ตามด้านล่างนี้:

คำสั่งเชลล์แคช

หากต้องการล้างการกำหนดค่าแคชหนึ่งรายการ:

ล้างแคชถัง/เค้ก

หากต้องการล้างการกำหนดค่าแคชทั้งหมด:

bin/เค้กแคช clear_all

person dixavier27    schedule 22.06.2019
comment
โปรดอย่าเพิ่ม ขอบคุณ เป็นคำตอบ จริงๆ แล้วพวกเขาไม่ได้ให้คำตอบสำหรับคำถามนี้ และผู้เข้าชมในอนาคตอาจมองว่าเป็นการรบกวน เมื่อคุณ ได้รับ ชื่อเสียง คุณจะได้รับสิทธิพิเศษในการโหวตตอบคำตอบที่คุณต้องการ วิธีนี้จะทำให้ผู้เยี่ยมชมคำถามในอนาคตเห็นจำนวนคะแนนโหวตที่สูงกว่าสำหรับคำตอบนั้น และผู้ตอบจะได้รับรางวัลเป็นคะแนนชื่อเสียงด้วย ดูเหตุใดการลงคะแนนจึงมีความสำคัญ - person Matthew; 22.06.2019