في للكيك كيف يمكنني أن أفعل تجد مع الظروف على مجال آخر ذي صلة؟

StackOverflow https://stackoverflow.com/questions/813294

  •  03-07-2019
  •  | 
  •  

سؤال

ولقد حصلت على نموذج (القوائم) التي لديها وينتمي إلى عدد قليل من نماذج مختلفة، وأود أن تجد كل هذا النموذج حيث انها نموذج (Openhouses) المتعلقة ديك حالة. و'له وينتمي إلى' هي الإعداد في ملفات نموذج. قوائم Openhouses hasmany وOpenhouses تنتمي إلى قوائم. (وقوائم لديها الكثير وblongs إلى عدد قليل من النماذج الأخرى حيث أريد البيانات.)

ولقد حاولت.

$this->Listing->find('all', 
array('conditions' => 
array('Openhouse.date >' => $openhouse_start->format('Y-m-d H:i:s'),
'Openhouse.date <' => $openhouse_end->format('Y-m-d H:i:s'))
));

ولكن دون جدوى.

Error: 1054: Unknown column 'Openhouse.date' in 'where clause

وأعرف أنني أستطيع أن البحث على نموذج Openhouse والحصول على القوائم ذات الصلة ولكن بعد ذلك يتم إرجاع البيانات في شكل مختلف، وأنا بحاجة لتحويل طريقة العودية حتى الحصول على بيانات من وجهة نظري نماذج أخرى. (وأنا في نهاية المطاف مع البيانات openhouse مكررة!). يمكنني الرد على بعض أكثر أمثلة التعليمات البرمجية إذا لزم الأمر.

وسؤالي هو هل أنا في الأساس تحتاج إلى مجرد الاستعلام عن نموذج openhouse والتعايش معه أو هو جملة بلدي لوضع شروط على نماذج ذات الصلة صحيحة؟

هل كانت مفيدة؟

المحلول

وجرب هذا:

$this->List->find('all', array(
    'contain' => array(
        'Openhouse.conditions' => array(
            'Openhouse.date >' => $openhouse_start->format('Y-m-d H:i:s'),
            'Openhouse.date <' => $openhouse_end->format('Y-m-d H:i:s'))
        )
    )
)

نصائح أخرى

إذا كان لديك الكثير من النماذج المرتبطة إعدادات عودي إلى 2 قد تجلب المزيد من البيانات مما كنت قد ترغب.

وإذا كان ذلك صحيحا، ولكن هناك بديل لما قاله mavarro، يمكنك أيضا محاولة استخدام في إحتواء السلوك :

$this->Listing->find
(
    'all', 
    array
    (
        'conditions' => array
        (
            'Openhouse.date >' => $openhouse_start->format('Y-m-d H:i:s'),
            'Openhouse.date <' => $openhouse_end->format('Y-m-d H:i:s')
        ),
        'contain' => array('Openhouse')
    )
);

وحاول إضافة $this->Listing->recursive = 2; قبل الدعوة للعثور على جميع. أن <م> يجب ربط الجداول قبل استدعاء مما يتيح لك الوصول إلى نموذج Openhouse من طراز قائمة.

$this->List->find('all', array(
    'contain' => array(
        'conditions' => array(
            'Openhouse.date >' => $openhouse_start->format('Y-m-d H:i:s'),
            'Openhouse.date <' => $openhouse_end->format('Y-m-d H:i:s')
                             ),
        'order' => array('Openhouse.date DESC')
                      )
                             )
)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top