CodeIgniter DataMapper — where_join_field генерирует неверный запрос

Моя программа использует ORM WanWizard DataMapper с CodeIgniter и должна выполнить простой запрос на основе поля в таблице соединений. Вот мой код:

$d = new Deal();

$deals = $d
    ->where_join_field('networks', 'status', 'active')
    ->get();

Довольно прямолинейно, как видите. Связь «многие ко многим» между «сделками» и «сетями» с полем «статус» в таблице соединений. Однако это запрос, который он генерирует:

SELECT * FROM (`deal`) WHERE `deal_network`.`status` = 'active'

Очевидно, это вообще не работает, потому что нет места JOIN для введения таблицы deal_network. Я попытался использовать include_related, но он использует псевдоним таблицы deal_network как networks_deal_network, что приводит к неправильной ссылке на таблицу. Как я могу заставить DataMapper правильно JOIN эту таблицу включить в запрос?


person Jonah    schedule 14.11.2012    source источник


Ответы (1)


Похоже, это ошибка имени таблицы в _join_field в libraries/datamapper.php. Я сделал форк и отправил запрос на включение с исправлением.

https://bitbucket.org/jonahbron/datamapper

person Jonah    schedule 19.11.2012