У меня есть таблица с именем «пользователь», и эта таблица имеет отношение «многие ко многим», например, любимое действие. это означает, что пользователь может добавить нескольких пользователей в избранное и может быть добавлен в избранное несколькими пользователями.
теперь я хочу запросить это отношение и получить каждого пользователя, который является избранным, для пространственного пользователя.
Я использую этот код:
$users = $agent->via($TB_Favorite,"agent_id=? and favorite.action=?", array($userId,FAVORITE_TYPE_USER_FAVORITE))->sharedUsers ;
Я отлаживаю этот код путем профилирования базы данных и получаю такой результат:
SELECT
`users`.* ,
COALESCE(
NULLIF(`favorite`.`users_id`, `users`.id),
NULLIF(`favorite`.`users2_id`, `users`.id)) AS linked_by
FROM `favorite`
INNER JOIN `users` ON
( `users`.id = `favorite`.`users2_id` AND `favorite`.`users_id` IN ('13') ) OR
( `users`.id = `favorite`.`users_id` AND `favorite`.`users2_id` IN ('13') )
но в этом случае он должен использовать favorite.agent_id вместо favorite.users2_id, как я могу решить эту проблему?
может быть, это прояснит мою позицию.