Алгоритм доставания ассоциированных списков, ООП

vitus

мимо проходил
Алгоритм доставания ассоциированных списков, ООП

php4
Представим себе, что есть два класса: News и Company

Данные для News хранятся в двух табличках в базе: news и news_company
(новость привязывается к нескольким компаниям)
news(id,date,title,.....); news_company(news_id,company_id);

задача: создать метод в классе News для получения ассоциативного массива со списками компаний типа - $companies[$news_id]=Company[] по списку $news_id

$companies=News::getCompaniesFor($news_id);

при минимальном количестве обращений к базе и
при условии что список компаний можно получать из базы только методом

Company[] Company::loadList(array $company_id);

гы: у меня есть решение, но может быть кто-нибудь предложит лучшее/более простое ...
 

alexhemp

Новичок
и в чем собсвтенно вопрос? Ты ждешь что за тебя кто-то напишет? Никто этого делать не будет.

Задай конкретный вопрос.
 

vitus

мимо проходил
и в чем собсвтенно вопрос? Ты ждешь что за тебя кто-то напишет? Никто этого делать не будет.
да я собственно написал уже, просто хотел проверить своё решение, может действительно есть более простое/красивое/интересное, так сказать чисто теоретический интерес :)

Задай конкретный вопрос
что уточнить?
 

Screjet

Новичок
Собсна тебе нужно обращаться к таблице news_company (М-М).
SQL типа такого:
SELECT company_id FROM news_company WHERE news_id = $news_id,
только неясно каким боком это связно с ООП?
..и почему бы не использовать объектный подход типа:
$news = new News();
$news->forCompany( $id );
$company_list = $news->GetCompanyList();
?
 

vitus

мимо проходил
Screjet
толи я косноязычен, толи ночь помешала тебе дочитать до конца :)

SQL типа такого:
SELECT company_id FROM news_company WHERE news_id = $news_id
- это для каждой новости дёргать компашки??

а происходить это должно так:
$news=new News($context);
$newsList=$news->loadAll($offset,$length,&$countAll);
$company=$news->getCompaniesFor($newsList);

- $company- наборы компаний (уже объектов) для всех выбранных новостюг.
 
Сверху