2013-04-12 2 views
0

Я использую это соединение в моем коде зажигательного моделикод воспламенитель DataMapper присоединиться Get()

$this->db->select('e.name, p.projects'); 
     $this->db->from('example as e'); 
     $this->db->join('procure as p', e.id = p.id'); 
     $this->db->where('e.cityid', '1'); 
     $this->db->where('e.status', '0'); 

У меня нет отдельной таблицы для объединения. Вот мой картограф данных, это не дает никакого выхода.

У меня есть две таблицы, и я хочу написать запрос соединения на них. У меня это в моем контроллере.

$example = new Example(); 
     $example ->where_join_field('procure', FALSE); 

Update

вы можете показать мне фрагмент кода для соединения трех таблиц с использованием картографа данных.

+0

@WanWizard: Можете ли вы помочь мне в этом? – user2261231

+0

Есть ли здесь вопрос? В чем именно проблема, с которой вы сталкиваетесь? – mcryan

+0

@mcryan: Как преобразовать мой вышеуказанный запрос ci в модель данных? – user2261231

ответ

0

Как правило, вы не делаете объединения вручную с DMZ-моделями (созданный sql будет использовать соединения, тем не менее). Вещь, которую вы ищете, - Relations.

Вы должны настроить отношения модели, используя атрибуты $has_one и $has_many, сохраняя соглашения об именах, создавая необходимые таблицы для многих-ко-многим и так далее. Вы можете прочитать об этом в документах here и here.

После того, как вы получили ваши модели настройки, вы можете использовать where_related и include_related методы, где вы использовали присоединяется раньше:

  1. where_related это, когда вы хотите, чтобы отфильтровать модели вы запрашиваете на некоторые значения полей связанной модели. Поэтому, если у вас есть связанный project, настроенный на ваш класс Example, вы можете написать ->where_related('project', 'procure', false); и он будет фильтровать возвращенные экземпляры Example на основе поля процедуры соответствующего проекта. Таким образом, в основном это те же условные условия, что и в предложении where SQL.

  2. include_related предназначен для тех случаев, когда вы хотите включать поля связанных моделей или даже целые экземпляры. Поэтому, если вы напишете ->include_related('project', 'projects') при запросе Example экземпляров, вы получите атрибут project_projects для возвращаемых экземпляров. Существует множество опций для управления тем, как эти атрибуты должны быть созданы. В основном это поля, которые вы поместили бы в предложение SQL select.

Есть магические методы, созданные для каждого имени отношения и многих других вариантов, я отсылаю вас к Get (Advanced) странице документации для начала и свободно исследовать otherpagesdescribingrelations.

+0

Это будет огромным удовольствием, если вы предоставите демо-файл .zip, включая базу данных. У меня было много попыток использовать datamapper с объединениями. Но не получение точной демонстрации. – Chintan7027

+1

@ Chintan7027: Я закрепил контроллер + несколько моделей со схемой sql и данными вместе. Надеюсь, что [это] (https://www.dropbox.com/s/71yn1vueof47rr5/so_15991597_demo.zip?dl=1) помогает. Вы должны просто оставить его в проекте codeigniter с уже установленным datamapper. Он использует расширение массива datamapper DMZ, поэтому я добавил конфигурацию datamapper. Извините за поздний ответ – complex857

+0

Большое вам спасибо @ complex857; Я жду этого – Chintan7027

Смежные вопросы