Yii2。 "With" 在多对多中
Yii2. "With" in ManyToMany
我有 3 个模型:图像、公司和文件。因此,如果我们查看公司模型,我们有:
/**
* @return \yii\db\ActiveQuery
*/
public function getImages()
{
return $this->hasMany('galleries\models\Image', ['id' => 'image_id'])
->viaTable('{{%companies_has_images}}', ['company_id' => 'id']);
}
public function extraFields()
{
return ['images'];
}
现在是图像模型:
/**
* @return \yii\db\ActiveQuery
*/
public function getFile()
{
return $this->hasOne('app\models\File', ['id' => 'file_id']);
}
public function extraFields()
{
return ['file'];
}
那么问题来了,如何在 Company 模型中的 getImages() 中获取包含正确文件的图像?
您必须先获取图像,然后为 return 文件提供额外的 getter 功能:
public function getImageFiles()
{
$files = [];
foreach ($this->images as $image)
$files[] = $image->file;
return $files;
}
我有 3 个模型:图像、公司和文件。因此,如果我们查看公司模型,我们有:
/**
* @return \yii\db\ActiveQuery
*/
public function getImages()
{
return $this->hasMany('galleries\models\Image', ['id' => 'image_id'])
->viaTable('{{%companies_has_images}}', ['company_id' => 'id']);
}
public function extraFields()
{
return ['images'];
}
现在是图像模型:
/**
* @return \yii\db\ActiveQuery
*/
public function getFile()
{
return $this->hasOne('app\models\File', ['id' => 'file_id']);
}
public function extraFields()
{
return ['file'];
}
那么问题来了,如何在 Company 模型中的 getImages() 中获取包含正确文件的图像?
您必须先获取图像,然后为 return 文件提供额外的 getter 功能:
public function getImageFiles()
{
$files = [];
foreach ($this->images as $image)
$files[] = $image->file;
return $files;
}