2012-01-09 166 views
2

我有3分贝表:书籍(编号,标题,作者,...)和订单(编号,book_id,user_id,...)和用户(编号,名称,用户名,... ),我想获得给定用户订购的书籍的标题。CakePHP嵌套选择查询

$this->set('user_orders', $this->Order->query("SELECT orders.id, orders.status, 
(SELECT books.title FROM books WHERE books.id = orders.book_id) as `titles` 
FROM orders WHERE orders.user_id = ".$this->Auth->user('id')."")); 

现在,我想获得相同的结果,但使用find()方法:

$this->set('user_orders', $this->Order->find('all', array(
             'fields' => array(
              'Order.id', 
              'status', 
              'Order.book_id',           
              'Book.title' => $this->Book->find('first',array(
               'fields' => 'Book.title', 
               'conditions'=> array('Book.id = Order.id') 
               )), 
              ), 
             'conditions' => array('user_id' => $this->Auth->user('id'))))); 

但是,这是行不通的

我使用query()方法编写查询。如何修正以获得与上面代码中相同的效果?

问候

+0

请注明你有你的模型之间的关联 – kaklon 2012-01-10 08:00:38

+0

你是什么意思“它不工作” - 是更具体。另外,你没有指定'ORDER'。最后 - 我想你的条件应该是'Book.id = Order.book_id',而不是'Order.id' – Dave 2012-01-10 14:22:36

回答