2013-01-06 43 views
0

对不起,我在cakePHP中有新的功能。我使用cakePHP 2.2。我有两个表,Books and Transactions。CakePHP:与最大值的连接表

表:书籍

id 
title 
author 

表:交易

id 
book_id 
status 
borrow_date 

在表事务列表本书的所有事务。

我的问题,如何获取最大交易ID的状态?

我尝试使用这个

 
options['joins'] = array(
      array(
       'table' => 'transactions', 
       'alias' => 'Transaction', 
       'type' => 'RIGHT OUTER', 
       'fields' => array('MAX(Transaction.id)', '*'), 
       'conditions' => array(
        'Catalogue.id = Transaction.catalogue_id', 
        //'Transaction.user_id' => $userId 
       ), 
       'order' => array('Transaction.id' => 'desc'), 
      ) 
     ); 
     $this->set('Book', $this->Book->find('all',$options)); 

的观点:

$Book['Transaction']['status']; 

但它显示了一个错误:

Notice (8): Undefined index: Transaction [APP\View\Catalogues\user_katalog.ctp, line 32]

回答

0

你正在做的查找(全部),所以你有一个列表书籍

var_dump($Book); 

你会看到

array(
    0 => array(
     'Transaction' => ... 
    ), 
    1 => array(
     'Transaction' => ... 
    ) 
    ..... 
); 

array(
    'Transaction' => ... 
); 

无论是环通$Book或使用find('first', ...)如果你想要一个。

+0

ü可以给我一些例子吗? –

+0

 foreach ($Book as $b): echo $b['Transaction']['status']; endforeach; 
我用这个,然后显示错误
 Notice (8): Undefined index: Transaction [APP\View\Book\list.ctp, line 32] 

0

dogmatic69是对的。这里有一个例子: 因为你已经在控制器中使用这样的:

$this->set('Book', $this->Book->find('all',$options)); 

你应该考虑使用这样的:

foreach($Book as $b) { 
     echo $b['Transaction']['status']; 
} 
+0

      
我用这个,然后显示错误通知 (8):未定义指数:事务[APP \视图\目录\ user_katalog.ctp,线32] –

+0

我使用如上所述你写的 –

+0

我不知道你是否仍然需要建议,但这里是你做错了:我不知道你是否仍然需要建议,但这是你做错了: 通过“<?php foreach($ Book为$ B):?>“,您将$ Book解压为$ B,但您正在打印”<?php echo $ b ['Book'] ['title'];?>“。它应该是“<?php echo $ B ['Book'] ['title'];?>”。注意$ b应该是$ B。 – Muntasir