0

申し訳ありませんが、cakePHP は初めてです。私はcakePHP 2.2を使用しています。Books と Transactions の 2 つのテーブルがあります。

表 : 本

id
title
author

表 : トランザクション

id
book_id
status
borrow_date

table transaction リストでは、書籍のすべてのトランザクションをリストします。

私の質問、最大トランザクション ID のステータスを取得する方法は?

これを使ってみます

options['結合'] = 配列(
            配列(
                'テーブル' => 'トランザクション',
                'エイリアス' => 'トランザクション',
                'type' => 'RIGHT OUTER',
                'fields' => array('MAX(Transaction.id)', '*'),
                '条件' => 配列(
                    'Catalogue.id = Transaction.catalog_id',
                    //'Transaction.user_id' => $userId
                )、
                'order' => array('Transaction.id' => 'desc'),
            )
        );
        $this->set('Book', $this->Book->find('all',$options));

ビューで:

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

しかし、それはエラーを示しています:

注意(8): 未定義のインデックス: トランザクション [APP\View\Catalogues\user_katalog.ctp、32 行目]

4

2 に答える 2

0

あなたはfind(all)をしているので、本のリストがあります

var_dump($Book);

あなたが見るでしょう

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

いいえ

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

ループする$Bookか、必要に応じて使用しfind('first', ...)ます。

于 2013-01-06T14:09:16.440 に答える
0

dogmatic69は正しいです。次に例を示します。これをコントローラーで使用したため、次のようになります。

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

これをビューで使用する必要があります。

foreach( $Book as $b ) {
      echo $b['Transaction']['status'];
}
于 2013-01-06T14:48:08.793 に答える