0

私はこれをやろうとしています:

$this->PickTicketLineModel->PickTicket->SO->CustomerShipToModel

各ピースを調べると、PickTicketLineのモデル、PickTicketのモデル、SOのモデルが得られます。CustomerShipToModelに到達すると、nullに戻ります。これはデータベース内の既存の行と一致するはずなので、リレーションに問題があると想定しています。助言がありますか?

チケットラインテーブルの関係を選択

'PickTicket' => array(self::BELONGS_TO, 'TblwhPickTicket', 'PickTicketNumber'),

チケットテーブルの関係を選択

'SO' => array(self::BELONGS_TO, 'TblsoSO', 'SONumber'),

SOテーブルの関係

'CustomerShipToModel' => array(self::BELONGS_TO, 'TblarCustomerShipTo', 'CustomerShipTo'),

顧客の出荷とテーブルの関係

'CustomerShipToModel' => array(self::HAS_MANY, 'TblarsoSO', 'CustomerShipTo'),

そもそもPickTicketLineモデルを入手した方法は次のとおりです。

$this->pickTicketLine = TblwhPickTicketLine::model()->with('PickTicket','PickTicket.SO')->FindByPk(array('PickTicketNumber'=>$pickTicketNumber, 'PickTicketLineNumber'=>$pickTicketLineNumber));
4

1 に答える 1

3

関連するすべてのデータを明示的に熱心にロードしてみてください。

$this->pickTicketLine = TblwhPickTicketLine::model()->with(array(
    'PickTicket' => array(
        'with' => array(
            'SO' => array(
                'with' => array('CustomerShipToModel')
            )
        )
    )        
))->findByPk(array(
    'PickTicketNumber'=>$pickTicketNumber,
    'PickTicketLineNumber'=>$pickTicketLineNumber
));

それでもうまくいかない場合は、コメントで Pentium10 が提案しているように、データベース要求をログに記録し、クエリを調べてください。phpMyAdmin にクエリを実行させるか、MySQL の "EXPLAIN" キーワードを使用して追加情報を得ることができます。関連するログを取得するには、config/main.php ファイルに次の行を追加する必要があります。

'components'=>array(
    'db'=>array(
        'enableProfiling' => true,
        'enableParamLogging' => true
    )
)
于 2012-08-14T20:05:11.453 に答える