Получить данные из таблиц, которые находятся в отношениях - PullRequest
1 голос
/ 07 ноября 2011

Я пишу простой блог с CodeIgniter и DataMapper, и у меня проблема с отношением. Как я могу получать сообщения, в частности, с помощью тегов DattaMapper. SQL-запрос будет выглядеть примерно так:

SELECT
    posts.id,
    posts.title,
    posts.content,
    posts.created,
    tags.name 
FROM 
    posts, 
    posts_tags, 
    tags
WHERE 
    posts.id = posts_tags.post_id AND 
    posts_tags.tag_id = tags.id AND
    tag.name = 'php';
ORDER BY
    posts.created DESC;

php код:

<?php
class Post extends DataMapper 
{
    public $has_many = array('tag');

    public function __construct()
    {
        parent::__construct();
    }

    public function getPostsByTags($name, $offset)
    {
        // this doesn't work
        // $this->get_where(array('tags.name', $name), 3, $offset);
    }
}

class Tag extends DataMapper
{
    public $has_many = array('post');

    public function __construct()
    {
        parent::__construct();
    }
}

Схема базы данных:

enter image description here

Есть предложения?

1 Ответ

1 голос
/ 07 ноября 2011

Я прочитал документ и думаю, что это может сработать:

$this->post->get();
foreach ($this->post $post)
{
    foreach ($post->tag->get() as $tag)
    { ... }
}

Выглядит великолепно. Я должен попробовать это сам ...

Обновление , читать здесь :

$p = new Post();
// Get users that are related to the Moderator group
$p->where_related_tag('name', 'php')->get();
...