关联模型排序问题

来源: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等方法

0
0

runzx

2017-12-06

你的代码如果与书中不一样, 那你最好把表结构信息附上, 我们才能判断问题所在。 同学们也好观磨学习。

关联处作 排序这是我实验出来, 也一直在用的,肯定能行。 你的问题,我只能猜有2个方面原因,你试试排查:

  1.   TP5里名字命名时, 大写一定要注意, 不能想用就用! 在关联时,驼峰会变成下划线,首字大写是用在类定义上。。。这里你要去试了

  2. 因不知你的表结构, 所以你的一对多关系定义, 我不知用对没, 这要你再去测试。


    下面是我在关联时的代码,供你参考:

  3. // zx 关联
    public function articleLecture(){
        return $this->hasMany('Article','category_id','id')
            ->where('status', '=' , 1)
            ->limit(20)
            ->order('update_at desc');
    }
0
0

业余程序员_老陈

提问者

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');
}


0
0

runzx

2017-12-04

在模型里关联处作排序就OK

0
0

微信小程序电商实战 从前端到后端的全流程精讲

全栈工程师/前后端都讲/架构思想/ RESTFul API、MySQL表设计

4805 学习 · 4382 问题

查看课程