我已将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方法,否则它会带来很多查询,对象和结果以及雄辩的对象。有没有办法不获得关系,只有标签没有其他东西?