2010-02-04 15 views
3

假設有兩個表。這可能在不使用關係的情況下在教條ORM中連接表?

Table X-- 
Columns: 
    id   x_value 

Table Y-- 
Columns: 
    id  x_id  y_value 

現在我不想定義教義班的關係,我想檢索使用這兩個表使用這樣的查詢的一些記錄:

Select x_value from x, y where y.id="variable_z" and x.id=y.x_id; 

我不是能夠想出如何寫這樣的查詢教義ORM

編輯:

表結構:

表1:

CREATE TABLE IF NOT EXISTS `image` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
`random_name` varchar(255) NOT NULL, 
`user_id` int(11) NOT NULL, 
    `community_id` int(11) NOT NULL, 
    `published` varchar(1) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=259 ; 

表2:

CREATE TABLE IF NOT EXISTS `users` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `city` varchar(20) DEFAULT NULL, 
    `state` varchar(20) DEFAULT NULL, 
    `school` varchar(50) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ; 

查詢我使用:

 $q = new Doctrine_RawSql(); 

     $q ->select('{u.*}, {img.*}') 
     ->from('users u LEFT JOIN image img ON u.id = img.user_id') 
     ->addComponent('u', 'Users u') 
     ->addComponent('img', 'u.Image img') 
     ->where("img.community_id='$community_id' AND img.published='y' AND u.state='$state' AND u.city='$city 
     ->orderBy('img.id DESC') 
     ->limit($count+12) 
     ->execute();   

錯誤我得到:

Fatal error: Uncaught exception 'Doctrine_Exception' with message 'Couldn't find class 
u' in C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Table.php:290 Stack trace: #0 
C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Table.php(240): Doctrine_Table- >initDefinition() #1 C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Connection.php(1127): 
Doctrine_Table->__construct('u', Object(Doctrine_Connection_Mysql), true) #2 
C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\RawSql.php(425): Doctrine_Connection- 
>getTable('u') #3 C:\xampp\htdocs\fanyer\doctrine\models\Image.php(33): Doctrine_RawSql- 
>addComponent('img', 'u.Image imga') #4 C:\xampp\htdocs\fanyer\community_images.php(31): 
    Image->get_community_images_gallery_filter(4, 0, 'AL', 'ALBERTVILLE') #5 {main} thrown  in 
    C:\xampp\htdocs\fanyer\doctrine\lib\Doctrine\Table.php on line 290 

回答

2

嘗試這樣:---

$q = new Doctrine_RawSql(); 
$this->related_objects = $q-> 
     select('{o.name}')-> 
     from('tagset t1 JOIN tagset t2 ON t1.tag_id = t2.tag_id AND t1.object_id != t2.object_id JOIN object o ON t2.object_id = o.id')-> 
     addComponent('o','Object o')-> 
     where('t1.object_id = ?', $this->object->id)-> 
     groupBy('t2.object_id')-> 
     orderBy('COUNT(*) DESC')-> 
     execute(); 
1

你可以直接寫數據庫到數據庫驅動程序。然而,你不會找回任何水合數組或對象。但它派上用場有時:

$sql = "SELECT * FROM... ";   
$pdo = Doctrine_Manager::connection()->getDbh();  
$data = $pdo->query($sql)->fetchAll(); 
0

您可以手動改變你的表格類中的Symfony 1.4但這應該小心操作,因爲你是不能鏈接通常應該發生的數據庫級別的表。

class TableName extends BaseTableName 
{ 
    public function setUp() 
    { 
     $this->hasOne('LinkedTableName', array(
      'local' => 'link_id', 
      'foreign' => 'link_id')); 
     parent::setUp(); 
    } 
} 

可能重複:doctrine join without relation

相關問題