关联模型排序问题
来源:8-3 模型关联----嵌套关联查询
业余程序员_老陈
2017-12-02
model::with("Items.Img")->find($id);
这样一个查询如果要对Img排序要怎么做?请老师指点。
按手册的model::with(["Items.Img"=>funciton($query){$query->order("time","DESC")}])->find($id);
提示的如果这样报错,没有Img话可以
写回答
4回答
-
qq_醉里行歌_0
2018-05-19
模型里关联查询也是一个链式查询,可以在里面使用limit,where,order等方法
00 -
runzx
2017-12-06
你的代码如果与书中不一样, 那你最好把表结构信息附上, 我们才能判断问题所在。 同学们也好观磨学习。
关联处作 排序这是我实验出来, 也一直在用的,肯定能行。 你的问题,我只能猜有2个方面原因,你试试排查:
TP5里名字命名时, 大写一定要注意, 不能想用就用! 在关联时,驼峰会变成下划线,首字大写是用在类定义上。。。这里你要去试了
因不知你的表结构, 所以你的一对多关系定义, 我不知用对没, 这要你再去测试。
下面是我在关联时的代码,供你参考:
// zx 关联 public function articleLecture(){ return $this->hasMany('Article','category_id','id') ->where('status', '=' , 1) ->limit(20) ->order('update_at desc'); }
00 -
业余程序员_老陈
提问者
2017-12-05
// 如下查询语句需要对Img查出来的数据进行排序。 model::with(["Items","Items.Img"])->find($id); // 对Items排序可以这样 model::with(["Items"=>function($query){ $query->order('time','DESC'); }])->find($id); // 同样的方法对Items.Img排序会报错 model::with([ "Items"=>function($query){ $query->order('time','DESC'); } "Items.Img"=>function($query){ $query->order('time','DESC'); } ])->find($id);
//前面有位仁兄提到在模型定义时排序也是报错代码贴出来 //Items关联Img代码如下报错 public function Img() { return $this->order('time','DESC')->hasMany('Img','img_id'); } //Items关联Img代码如下不报错但使用with时排序无效 public function Img() { return $this->hasMany('Img','img_id')->order('time','DESC'); }
00 -
runzx
2017-12-04
在模型里关联处作排序就OK
00