2013-09-26 49 views
0

因爲我很新,不要評價我。我正在嘗試製作過濾器,但在途中遇到了一些困難。我有兩個數據表。首先與公司,第二與用戶。php symfony原則或從2表中取數據

Companies: 
____________________ 
id | name  | 
1 | try   |     
2 | test  |    
3 | experiment | 


Users: 
_____________________________________ 
|id | company_id | name | status | 
| 1 |  1  | Idiot |pending | 
| 2 |  1  | Funny |active | 
| 3 |  2  | Me  |pending | 
| 4 |  2  | Lucky |rejected| 
| 5 |  2  | Moon |rejected| 

我必須做或許INNER JOIN,並只採取公司和待處理的用戶。我對'被拒絕'不感興趣。所以我很有興趣得到:

3 | 2 | Me | pending | test 

和其他記錄有掛起和沒有活動。公司必須有待決用戶,同一公司不得有任何活動。

SELECT * 
FROM users u 
INNER JOIN companies c 
ON u.company_id = c.id 
WHERE u.status = 'pending' 
    AND NOT EXISTS(SELECT u2.status 
       FROM users u2 ON u2.id = c.id 
       WHERE u2.status = 'pending') 

或類似的東西是SQL,但我現在不能檢查它。我想讓它成爲Doctrine $query = ..->innerJoin(..)->where...但不能做到。請任何幫助。哦,這將如何處理100,000個記錄數據庫?有沒有更好的辦法?謝謝。

+0

提示:更好地格式化你的樣本數據,使用代碼塊,而不是HTML。您可以通過在這些代碼塊之前添加'<! - language:lang-none - >'(不縮進)來禁用語法高亮顯示。 –

+0

你能用一句簡單的句子寫出你需要從這些表中得到什麼嗎?這是非常不清楚的 – sinhix

回答

0

在/lib/model/doctine/UsersTable.class.php:

class UsersTable extends Doctrine_Table 
{ 

    public function getAllCompanies($user_id) { 

    $q = $this->createQuery('u') 
     ->where('u.istatus = ?','pending') 
     ->leftJoin('u.Companies c WITH c.id = u.company_id') 
     ->execute(); 

    return $q; 


    } 
}