Php Yii中是否有超过两个级别的with()?
我正在尝试这样做:Php Yii中是否有超过两个级别的with()?,php,activerecord,yii,Php,Activerecord,Yii,我正在尝试这样做: $this->PickTicketLineModel->PickTicket->SO->CustomerShipToModel 如果我仔细检查每一件作品,我会得到一个用于PickTicketLine的模型,一个用于PickTicket,一个用于SO。当我到达CustomerShipToModel时,我返回null。因为这应该与数据库中的现有行匹配,所以我假设关系出现了问题。有什么建议吗 选择票证行表关系 'PickTicket' => arra
$this->PickTicketLineModel->PickTicket->SO->CustomerShipToModel
如果我仔细检查每一件作品,我会得到一个用于PickTicketLine的模型,一个用于PickTicket,一个用于SO。当我到达CustomerShipToModel时,我返回null。因为这应该与数据库中的现有行匹配,所以我假设关系出现了问题。有什么建议吗
选择票证行表关系
'PickTicket' => array(self::BELONGS_TO, 'TblwhPickTicket', 'PickTicketNumber'),
'SO' => array(self::BELONGS_TO, 'TblsoSO', 'SONumber'),
'CustomerShipToModel' => array(self::BELONGS_TO, 'TblarCustomerShipTo', 'CustomerShipTo'),
'CustomerShipToModel' => array(self::HAS_MANY, 'TblarsoSO', 'CustomerShipTo'),
选择票证表关系
'PickTicket' => array(self::BELONGS_TO, 'TblwhPickTicket', 'PickTicketNumber'),
'SO' => array(self::BELONGS_TO, 'TblsoSO', 'SONumber'),
'CustomerShipToModel' => array(self::BELONGS_TO, 'TblarCustomerShipTo', 'CustomerShipTo'),
'CustomerShipToModel' => array(self::HAS_MANY, 'TblarsoSO', 'CustomerShipTo'),
那么表关系呢
'PickTicket' => array(self::BELONGS_TO, 'TblwhPickTicket', 'PickTicketNumber'),
'SO' => array(self::BELONGS_TO, 'TblsoSO', 'SONumber'),
'CustomerShipToModel' => array(self::BELONGS_TO, 'TblarCustomerShipTo', 'CustomerShipTo'),
'CustomerShipToModel' => array(self::HAS_MANY, 'TblarsoSO', 'CustomerShipTo'),
客户发货到表的关系
'PickTicket' => array(self::BELONGS_TO, 'TblwhPickTicket', 'PickTicketNumber'),
'SO' => array(self::BELONGS_TO, 'TblsoSO', 'SONumber'),
'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));
尝试显式加载所有相关数据:
$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
)
)
尝试显式加载所有相关数据:
$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
)
)
在with()链之前添加together()链,如果不起作用,则需要打开sql日志并查看生成的查询together()不起作用,尽管我不确定它应该做什么。现在,我已经开始使用findByPkU assign
$this->pickTicketLine
分别拉取customerShipTo模型,但是使用$this->PickTicketLineModel
->PickTicket->SO->CustomerShipToModel,可能:$this->pickTicketLine
->PickTicket->SO->customershipticketmodel在with()链之前添加()链,如果不起作用,您需要打开sql日志并查看生成了什么查询Together()不起作用,尽管我不确定它应该做什么。现在,我刚开始使用findByPkU assign$this->pickTicketLine
分别拉取customerShipTo模型,但是使用$this->pickTicketLine模型
->PickTicket->SO->customerShiptodel,可能:$this->pickTicketLine
->PickTicket->SO->customerShiptodel您应该能够使用(数组)来做('PickTicket.SO.CustomerShipToModel')
您应该能够使用(数组('PickTicket.SO.CustomerShipToModel'))执行。