0

Cakephp 1.3 を使用するサイトで作業しています。先月、サイトのホスティング サービスを変更しました。その後、私は問題を抱えています。

すなわち。DB に予約テーブルがあります。find() ステートメントを使用している場合、予約テーブルは二重エントリを返します。なぜこれが起こっているのかわかりませんでした。

たとえば、特定の場所の車両データを取得すると、次のように返されます。

find('all') ステートメントで 'recursive'=>2 を使用すると、次の結果が得られました


**

Parking Location : Chennai Citi Centre 2W
Booking Date : 02/04/2013
Booking ID  Transaction Type    Vehicle No  Check In Date       Check Out Date
187994      Normal          7099        02/04/2013 18:31    02/04/2013 22:03
187994      Normal          7099        02/04/2013 18:31    02/04/2013 22:03

**

しかし、find('all') ステートメントで 'recursive'=>-1 を使用すると、次のようになります。

**

Parking Location :
Booking Date : 02/04/2013
Booking ID  Transaction Type    Vehicle No  Check In Date       Check Out Date
187994      Normal          7099        02/04/2013 18:31    02/04/2013 22:03

**

ここで駐車場所は来ません。プロバイダーテーブルにあります。

誰でもこれを修正するのを手伝ってください

4

1 に答える 1

0

通常、 以外のものを使用することはお勧めしませんrecursive=>-1。適切な場合は、収容可能な動作を使用するだけです。モデルの関連付けを知らずに、または使用している正確な検索クエリを使用せずに、最初のアプローチが二重エントリを返す理由を本当に伝えることはできません (予約または駐車場で find() を実行していますか? )、containable を試してみて、それが機能するかどうかを確認してください。

のようなもの... (モデルがどのように呼び出され、find() をどのように使用しているかを想定しています)

$this->Booking->find('all', array('conditions'=> array() ,//some conditions here
                                  'recursive' => -1,
                                  'contain' => array('Parking'));

その後、返された配列のダンプを実行して、出力がニーズに合っているかどうかを確認します。収容可能な動作の詳細については、こちらを確認してください

于 2013-04-09T15:23:02.070 に答える