2009-12-26 10 views
5

मैं केकेएफपी का उपयोग कर रहा हूं और सभी सबमिशन प्रदर्शित करना चाहता हूं जो श्रेणी 'एक्स' का हिस्सा हैं मेरे पास एचएबीटीएम संबंध के साथ 4 टेबल हैं।एचएबीटीएम को पुनर्प्राप्त करने वाले केकफ़्प

उपयोगकर्ता -> (haveMany) -> प्रविष्टियों < -> (hasAndBelongsToMany) < -> श्रेणियाँ

लेकिन मैं) $ this-> पृष्ठ पर अंक लगाना (का उपयोग कर ऐसा करने के लिए चाहते हैं और प्रत्येक प्रस्तुत करने के लिए मैं चाहूँगा जमा करने वाले उपयोगकर्ता को प्रदर्शित करने के लिए।

उपयोगकर्ता तालिका

Id |  Name   
-----+------------------- 
1 | User 1  
2 | User 2  

प्रस्तुत तालिका

Id |  Name   | User_id 
-----+-------------------+-------------- 
1 | Submission 1 |  1  
2 | Submission 2 |  2  

श्रेणी तालिका

Id |  Name 
-----+------------------- 
1 | Category 1   
2 | Category 2   

SubmissionCategory टेबल

Id | Submission_id | Category_id 
-----+-------------------+------------------- 
1 |   1   |  1  
2 |   1   |  2 
3 |   2   |  1  

मैं सच में मुसीबत एक पृष्ठ पर अंक लगाना जो यह कर सकते हैं बनाने कर रहा हूँ, मैं जब तक मैं कुछ याद कर रहा हूँ संभव नहीं है सोचने के लिए शुरू कर रहा हूँ।

मैं CakePHP का उपयोग नहीं किया गया था कि इस प्रश्न मैं

SELECT 
    * 
FROM 
    submissions_categories, 
    submissions, 
    users 
WHERE 
    submissions_categories.category_id = 8 
      AND 
    submissions_categories.submission_id = submissions.id 
      AND 
    submissions.user_id = users.id 

उत्तर

7

HABTM रिश्तों क्या करना चाहते हैं कर रहे हैं CakePHP मुझे लगता है बहुत बोझल है। आपको $ पेजिनेट वैरिएबल का उपयोग करके मैन्युअल रूप से जॉइन सेट अप करने की आवश्यकता होगी। फिर आप पेजिनेट() फ़ंक्शन में वैकल्पिक स्थितियों सरणी में पास कर सकते हैं। उदाहरण:

<?php 
class SubmissionsController extends AppController { 

var $name = 'Submissions'; 
var $helpers = array('Html', 'Form'); 
var $paginate = array('joins' => array(
    array( 
       'table' => 'submissions_categories', 
       'alias' => 'SubmissionsCategory', 
       'type' => 'inner', 
       'conditions'=> array('SubmissionsCategory.submission_id = Submission.id') 
      ), 
      array( 
       'table' => 'categories', 
       'alias' => 'Category', 
       'type' => 'inner', 
       'conditions'=> array( 
        'Category.id = SubmissionsCategory.category_id' 
       ) 
      ))); 

function index() { 
    $this->Submission->recursion = 1; 
    $this->set('submissions', $this->paginate(array('Category.id'=>1))); 
} 
} 

?> 
संबंधित मुद्दे