think icon indicating copy to clipboard operation
think copied to clipboard

关联模型的字段如何参与排序?

Open mkinit opened this issue 2 years ago • 2 comments

我有一个数据表,是文章的自定义字段表,已经通过一对多关联,请问在查询数据的时候这个关联的表字段怎么参与排序? +----+---------+----------+------------+ | 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();

mkinit avatar Dec 24 '21 09:12 mkinit

你这个问题,需要用view解决,但是如果不用group,主表内容会重复(副表有多条记录时) 用了group,数据量大时可能有性能问题 以下为示例代码,可以酌情参考

Db::view('post','*')->view('postMeta',['meta_key','meta_value'],'postMeta.article_id=post.id','left')->order('meta_value')->limit(10)->select();

shirne avatar Dec 24 '21 11:12 shirne

你这个问题,需要用view解决,但是如果不用group,主表内容会重复(副表有多条记录时) 用了group,数据量大时可能有性能问题 以下为示例代码,可以酌情参考

Db::view('post','*')->view('postMeta',['meta_key','meta_value'],'postMeta.article_id=post.id','left')->order('meta_value')->limit(10)->select();

非常感谢。

mkinit avatar Dec 24 '21 12:12 mkinit