Я разрабатываю модуль на веб-сайте для сохранения и получения списка друзей.Я использую Zend Framework и для обработки БД я использую Doctrine (ORM).
Существует две модели:
1) users , в которой хранятся все пользователи
2) my_friends , в которых хранится список друзей (чтоявляется справочной таблицей с отношением пользователя M: M)
структура my_friends следующая
... id ..........user_id ............ friend_id ........ утверждено ....
... 10 ......... 20 .................. 25 ................... 1 ..........
...10 ......... 21 .................. 25 ...................1 ..........
... 10 ......... 22 .................. 30 ................... 1 ..........
... 10 ......... 25 .................. 30 ................... 1 ..........
Doctrine запрос для получения идентификатора списка друзей после
$friends = Doctrine_Query::create()->from('my_friends as mf')
->leftJoin('mf.users as friend')
->where("mf.user_id = 25")
->andWhere("mf.approved = 1");
Предположим, я просматриваю user no.- 25 .
С этим запросом Iя получаю только номер пользователя- 30 .
, где номер пользователя- 25 также одобренный друг номер пользователя- 20 и 21 .
Пожалуйста, ведите меня, что должен быть запрос, чтобы найти всех друзей и есть ли необходимость изменить структуру БД.
YAML
Член:
столбцы:
id:
primary: true
type: integer
notnull: true
autoincrement: true
userName:
unique: true
type: string(255)
Address_id:
type: integer(4)
MemberPhoto_id:
type: integer
relations:
address:
class: Address
local: Address_id
foreign: id
memberPhotos:
class: MemberThumbnail
foreignAlias: member
local: MemberPhoto_id
foreign: id
refPeeps:
columns:
id:
primary: true
unique: true
type: integer
autoincrement: true
Member_id:
type: integer
notnull: true
Peep_id:
type: integer
notnull: true
relations:
Member:
local: Member_id
foreign: id
Member:
local: Peep_id
foreign: id