1
私はCodeIgniterとDataMapperを使って簡単なブログを書いていますが、関係に問題があります。 DattaMapperで特定のタグで投稿を取得するにはどうすればいいですか?関係にある表からデータを取得
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();
}
}
データベーススキーム:
任意の提案SQLクエリは、そのようなものでしょうか?
しかし、この溶液中で、私はすべての記事を取得し、タグ名を優先していたポストを確認してください。だから私はこのデータの一部が必要ないデータを検索します。 – PaulP
ああそうです。これのために何かを見つけた。たぶん次回に自分で文書を読んでいるのでしょうか? ;) – PiTheNumber
PiTheNumberは正しい - あなたはタグのリストを持っていて、それらのタグを持つ投稿を取得したいと言っています。あなたはこれを行うことができます: '$ p-> where_related_tag( 'name'、 'php') - > or_where_related_tag( 'name'、 'html') - > get();' - これはあなたにすべての投稿を与えますあなたが使用しているタグを持っています。 – swatkins