Я думаю, что у меня ограничение по phpactiverecord, но нужно уточнить:
$data = array(
'conditions' => array(
'still_in_contest' => 1,
'contest_month' => $month,
'`genres`.`id`' => $genre, # THIS is the issue.. and an awkward "hack" that
# I was hoping would work..
)
'include' => array('song' => array('artist','genre')),
'joins' => array('
LEFT JOIN songs
ON (songs.id = contest_submissions.song_id)
LEFT JOIN genres
ON (genres.id = songs.genre_id)',
),
Разве нельзя просто добавить что-то вроде genres.id
в запрос?
phpactiverecord
устанавливает запрос как:
WHERE `contest_submissions`.`genres`.`id`=?
Если есть какой-то другой способ получить выгоду от автозагрузки с другим подобным запросом, не делая все самостоятельно?
EDIT:
Моим решением сейчас было просто изменить ядро класса SQLBuilder в phpactiverecord, чтобы не добавлять имя таблицы, если в ключе есть точка ...
EDIT2:
Я попробовал ваше решение, Нанн, и оно не сработало. Phpactiverecord завершает добавление имени таблицы ко всему. (
$genre = 1
if($genre)
$data['conditions']['genres.id'] = $genre;
$data['conditions']['contest_submissions.still_in_contest'] = 1;
$data['conditions']['contest_submissions.contest_month'] = $month;
Предыдущее сработало, потому что я сохранил свой хак. Неправильно ли я отформатировал условие?
EDIT3:
да .. да я неправильно отформатировал.