Mysql Yii2使用ActiveRecord的三个表之间的关系

Mysql Yii2使用ActiveRecord的三个表之间的关系,mysql,activerecord,yii2,Mysql,Activerecord,Yii2,我在mysql数据库中有三个表,如下图所示: 现在,通过gii,我创建了如下模型: $model = $this->findModel($id); // model Bukti Penerimaan. $dataInvoice = $model->invoiceReports; //exist $dataInvoiceDetail = $model->invoiceReports->invoiceReportDetails // failed, always null.

我在mysql数据库中有三个表,如下图所示:

现在,通过gii,我创建了如下模型:

$model = $this->findModel($id); // model Bukti Penerimaan.
$dataInvoice  = $model->invoiceReports; //exist
$dataInvoiceDetail = $model->invoiceReports->invoiceReportDetails // failed, always null.
对于Buktipeneriman表

class BuktiPenerimaan extends \yii\db\ActiveRecord{
/**
 * @return \yii\db\ActiveQuery
 */
public function getInvoiceReports()
{
    return $this->hasMany(InvoiceReport::className(), ['bukti_penerimaan_id' => 'id']);
}
}
和发票报告:

class InvoiceReport extends \yii\db\ActiveRecord{

/**
 * @return \yii\db\ActiveQuery
 */
public function getInvoiceReportDetails()
{
    return $this->hasMany(InvoiceReportDetail::className(), ['invoice_id' => 'id']);
}
我的问题是,如果我创建了一个来自Buktipeneriman的对象,如何访问表
invoice\u report\u detail
中的所有记录

我是这样使用的:

$model = $this->findModel($id); // model Bukti Penerimaan.
$dataInvoice  = $model->invoiceReports; //exist
$dataInvoiceDetail = $model->invoiceReports->invoiceReportDetails // failed, always null.

请注意

$dataInvoice=$model->invoiceReports
InvoiceReport
对象的数组

您需要在每个
InvoiceReport
上循环以获取相关的
InvoiceReportDetail

$model = $this->findModel($id); // model Bukti Penerimaan.
$dataInvoice  = $model->invoiceReports; //exist , but array of objects
$dataInvoiceDetail = [];
foreach($dataInvoice as $dInvoice):
   $dataInvoiceDetail[] = array_merge($dataInvoiceDetail,$dInvoice->invoiceReportDetails );
endforeach;
// $dataInvoiceDetail contains all invoice_report_detail