2015-05-25 2 views
0

У меня есть 3 модели: изображение, компания и файл. Так что, если мы посмотрим на модели компании, мы имеем:Yii2. «С» в ManyToMany

/** 
* @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']; 
} 

Так вот вопрос, как я могу получить изображения с правильными файлами в getImages() в Модель компании?

+1

Просто используйте отношение? 'foreach ($ company-> images as $ image) $ file = $ image-> file;' Ваш вопрос несколько неясен. – Blizz

+0

Спасибо, мне было нужно что-то вроде public function getFileImage() { { foreach ($ this-> images as $ image) { $ files [] = $ image-> file; } return $ files; } – rkalita

+0

Если это информация, которую вы ищете, я напишу ее в ответе, чтобы вы могли отметить вопрос. – Blizz

ответ

1

Вы должны будете первым получать изображения, а затем предоставить дополнительную функцию геттера вернуть файлы:

public function getImageFiles() 
{ 
    $files = []; 
    foreach ($this->images as $image) 
     $files[] = $image->file; 
    return $files; 
} 
Смежные вопросы