如何通过标记功能将标记功能集成到wordpress中?

时间:2016-05-10 12:36:11

标签: php wordpress laravel eloquent

我已将wp-eloquent与wordpress集成,我想在标签和帖子之间建立关系。

通常,wordpress内置函数正在使用这种类型的查询,这非常好:

SELECT *
FROM 0UU60c51_term_relationships
JOIN 0UU60c51_term_taxonomy
ON 0UU60c51_term_relationships.term_taxonomy_id = 0UU60c51_term_taxonomy.term_taxonomy_id
JOIN 0UU60c51_terms
ON 0UU60c51_terms.term_id = 0UU60c51_term_taxonomy.term_id
WHERE object_id = '13944' AND taxonomy = 'post_tag';

我正在使用这种关系和这种方法:

命名空间WeDevs \ ORM \ WP; 使用WeDevs \ ORM \ Eloquent \ Model;

/**
 * Class Post
 *
 * @package WeDevs\ORM\WP
 */
class Post extends Model
{
    public function tags(){
        return $this->terms("post_tag");
    }

    public function terms($term_type)
    {
        $closure = (function($query) use ($term_type) {
            $query = $query->where("taxonomy",$term_type);
            return $query;
        }); 
        return $this->belongsToMany('WeDevs\ORM\WP\Term','0UU60c51_term_relationships','object_id','term_taxonomy_id')->whereHas("term_taxonomy", $closure);
    }

实际上两者的结果是相同的:

print_pre(Post::find(13944)->tags->lists("name"));

但除非我没有使用list方法,否则它会带来很多查询,对象和结果以及雄辩的对象。有没有办法不获得关系,只有标签没有其他东西?

0 个答案:

没有答案