Page
У меня есть модель, которая HAS_MANY
Attachment
В модели страницы:Yii модель сферы применения, связанные с
public function relations()
{
return array(
'attachments'=>array(self::HAS_MANY, 'Attachment', 'parent_id'),
)
}
и я ищу способ, чтобы сделать некоторую область видимости на этих вложениях.
В PageController
у меня есть:
$model = Page::model()->with(array('attachments'))->findByAttributes(array('slug' => $slug))
Например, в представлении Страница Я хотел бы:
- получить все вложения:
$model->attachments
(это работает отлично), но мне нужно: - все опубликованные вложения (все с
status
= 1) - получить первое продвинутое приложение (первое с
promoted
= 1) - получить только изображения (
mime_type
in_array'image/jpeg', 'image/gif', ...
) - получить все остальные файлы (все, что не является изображением)
и любое их сочетание. Пример: первое продвинутое и опубликованное изображение
Я думаю, что лучший вариант - сделать это без каких-либо дополнительных запросов и просто фильтровать $model->attachments
, но возможно ли это?
Edit:
есть один pages
стол и другой attachments
стол
в таблице вложений у меня есть: id
, parent_id
, file_name
, mime_type
, status
, promoted
Прежде всего вы скажите мне, какое у вас имя класса модели?. Во-вторых, покажите мне свой метод полных отношений, а в-третьих, изображения, файлы имеют отдельные таблицы или отдельные вложения в таблицу. покажите мне ваши таблицы вложений только поля, тогда я могу ответить на ваш вопрос. Благодарю. –
Посредством привязки вы можете получить только те поля, которые находятся в таблице вложений, если вы хотите другие поля, тогда вам нужно установить еще несколько отношений для изображений и файлов. –
страниц класс модели 'Page' и вложение -' Attachment' только отношения между ними Page HAS_MANY Attachment в зависимости от вложений 'parent_id' всех вложений в одной таблице, и каждое вложение сохраняет это mime_type так быть в состоянии получить, например, «только изображения», «только НЕ изображения», «только архивы», «только rars», например –