think
think copied to clipboard
关联模型的字段如何参与排序?
我有一个数据表,是文章的自定义字段表,已经通过一对多关联,请问在查询数据的时候这个关联的表字段怎么参与排序? +----+---------+----------+------------+ | id | post_id | meta_key | meta_value | +----+---------+----------+------------+ | 1 | 12 | price | 20 | | 2 | 11 | price | 35 | +----+---------+----------+------------+
//关联的自定义字段 public function meta() { return $this->hasMany(Meta::class); }
//控制器查询语句 PostModel::where($where) ->page($this->page, $this->pageSize) ->orderRaw('time_add desc')//如何让meta_key和meta_value字段作为排序条件 ->select();
你这个问题,需要用view解决,但是如果不用group,主表内容会重复(副表有多条记录时) 用了group,数据量大时可能有性能问题 以下为示例代码,可以酌情参考
Db::view('post','*')->view('postMeta',['meta_key','meta_value'],'postMeta.article_id=post.id','left')->order('meta_value')->limit(10)->select();
你这个问题,需要用view解决,但是如果不用group,主表内容会重复(副表有多条记录时) 用了group,数据量大时可能有性能问题 以下为示例代码,可以酌情参考
Db::view('post','*')->view('postMeta',['meta_key','meta_value'],'postMeta.article_id=post.id','left')->order('meta_value')->limit(10)->select();
非常感谢。