CakePHP'de Karmaşık İlişkisi bul

0 Cevap php

Ben uygun bir find yapmak mümkün değilim üzerinde biraz karmaşık bir veritabanı modeli var

kullanıcı (id, adı ...)

1 Harsha

2 Jasmine

modülleri (id, isim)

1 Users

2 Restaurants

3 Dishes

restoran (id, adı ....)

1 KFC 

2 Pizza Hut

yemekler (id, adı, restaurant_id ..)

1 Cheese Pizza 2

ürün (id, module_id, item_id)

1 1 1 (refers to User Harsha)

2 2 1 (Refers to KFC)

3 2 2 (Refers to Pizza Hut)

4 1 2 (Refers to User Jasmine)

5 3 1 (Refers to Cheese Pizza)

yorumlar (id, parent_id, mesaj, item_id, commenters_id)

1 0 "I love the ambience of Pizza Hut" 3 1 (Refers to Harsha reviewing Pizza Hut)

2 1 "You remind me of that kid in the next table who freaked me out." 3 2 (Refers to Jasmine Replying to Harsha's review on Pizza Hut)

3 0 "I love Cheese Pizza in Pizza Hut" 5 1 (Refers to the Cheese Pizza Review by Harsha)

i tüm restoranlar Harşa tarafından yapılan değerlendirmeleri bulmak için çalışıyoruz ama tek başına restoran değerlendirmeleri onları sınırlamak mümkün değilim duyuyorum. Ben de Bulaşık Yorumlarını geri alıyorum

Here is the code i have used // Checks if the User is logged in if yes gathers the ID $id = $this->_loggedIN();

    // Find the ItemID from the Item Table
    $itemId = $this->User->Item->itemId('1', $id);

    // Finding the User Data and last Status Message
    $user = $this->User->Item->find('first', array('conditions' => array('Item.id' => $itemId), 'contain' => array('User', 'StatusMessage' => array('limit' => 1, 'order' => 'StatusMessage.created DESC'))));

    // Find the Restaurant Reviews of the Current User
    $reviews = $this->User->Item->Review->find('all', array('conditions' => array('Review.commenters_item_id' => $itemId, 'Review.pid = 0'), 'order' => array('Review.created DESC'), 
    'contain' => array(
        'Item' => array(
            'User' => array(
                'fields' => array('id', 'first_name', 'last_name', 'username', 'file')), 
            'Restaurant' => array('fields' => array('id', 'name', 'slug', 'file', 'area_id', 'city_id'), 
                'Area')), 
        'ReviewReply' => array(
            'Item' => array(
                'User' => array(
                    'fields' => array('id', 'first_name', 'last_name', 'username', 'file')))))));

0 Cevap