yii2 一对多关系的对分页造成的影响

下面代码中关联descies时,匹配较多,造成分页数不对,需要加条件限制:
$model = User::find()    ->joinWith(‘app‘)    ->joinWith([‘descies‘ => function($query){        return $query->where([‘user_desc_type_id‘=>7]);    }])    ->where($condition)    ->andFilterWhere($condition_pay_start)    ->andFilterWhere($condition_sex);$pagination = new Pagination([    ‘defaultPageSize‘ => 10,    ‘totalCount‘ => $model->count(),]);
1.可在model中建立关联时限定:
  1. public function getBooks()
  2. {
  3. return $this->hasMany(Item::className(), [‘owner_id‘ => ‘id‘])->onCondition([‘category_id‘ => 1]);
  4. }

 2.代码中限定:方法如上:

原文地址:https://www.cnblogs.com/qq1069284034/p/8508368.html

时间: 2024-11-05 18:35:23

yii2 一对多关系的对分页造成的影响的相关文章

Yii2.0实用功能技巧解密之——分页功能

Yii中的分页功能主要由yii\web: Linkable接口.yii\widgets: LinkPager类和yii\data: Pagination类三个组成. yii\data: Pagination 主要功能是对分页中的参数进行设置,如当前页.每页大小.总页数,总记录数等. yii\widgets: LinkPager 主要是根据yii\data: Pagination类所提供的参数生成前台页面的分页html代码. 使用:先在action里面生成分页对象,然后在前台的LinkPager中

一对多关系 操作小总结

1.如果让一的一方维护关系,取决于的因素有1.在一的一方的映射文件中,set元素的inverse属性为default/false 2.在客户端的代码中,通过一的一方建立关系3.session.save/update方法是用来操作表的,和操作关系没有关系2.怎么样采用级联的方法通过保存一个对象从而保存关联对象1.如果session.save操作的对象是A,这个时候应该看A.hbm.xml,看set元素中cascade是否设置有级联保存2.在客户端通过A建立关联3.在客户端执行session.sav

MyBatis之级联——一对多关系

上次我们讲到了MyBatis的一对一关系的表示,简单回顾一下一对一关系就是一个学生只有一个学生证.那么什么是一对多关系呢?一个学生有多个课程这就是一对多的关系.我们结合上一章中的学生和学生证,在此基础上新增一个课程表和课程成绩表.学生对应课程表是一对多的关系,在学生确定的情况下课程表对应课程成绩是一对一的关系.我们先来看看我们所假设的场景数据结构的设计. 数据库的ER图如下(因为对数据库还处于菜鸟阶段--所以可能ER图绘制有误,但不影响我们讲解MyBatis一对多关系的级联): 再看看数据库的物

Mybatis框架中实现一对多关系映射

学习过Hibernate框架的伙伴们很容易就能简单的配置各种映射关系(Hibernate框架的映射关系在我的blogs中也有详细的讲解),但是在Mybatis框架中我们又如何去实现 一对多的关系映射呢? 其实很简单 首先我们照常先准备前期的环境(具体解释请  参考初识Mybatis进行增.删.改.查 blogs )这里我就直接上代码了 主配置文件:Configuration.xml <?xml version="1.0" encoding="UTF-8" ?&

Hibernate中双向的一对多关系

何为双向,双向的意思就是你我之间可以互相通信(customer(1)和order(n)) 也就是说customer可以访问order,order也可以访问customer 二者构成了双向的关系 在Hibernate中如何实现双向的一对多关系呢?? 步骤: I在1的一端(也就是customer)添加n端(order)的集合列表,并添加get和set方法 package com.jeremy.hibernate.app.example.both; import java.util.HashSet;

菜鸟学习Hibernate——一对多关系映射

Hibernate中的关系映射,最常见的关系映射之一就是一对多关系映射例如学生与班级的关系,一个班级对应多个学生.如图: Hibernate中如何来映射这两个的关系呢? 下面就为大家讲解一下: 1.创建实体类Classes和实体类Student Classes.java package com.bjpowernode.hibernate; import java.util.Set; public class Classes { private int id; private String nam

[NHibernate]一对多关系(关联查询)

目录 写在前面 文档与系列文章 一对多查询 总结 写在前面 上篇文章介绍了nhibernate的一对多关系如何配置,以及级联删除,级联添加数据的内容.这篇文章我们将学习nhibernate中的一对多关系的关联查询.前面文章中也介绍的nhibernate的查询:HQL,条件查询,原生SQL查询. 文档与系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernat

Hibernate一对多关系操作

1.创建两个实体类. 一个实体类是商品类,另一个实体类是商品的分类类. 在一对多关系的两个实体中,在编写实体类时必须要遵循以下规则: (1)在一的那一方的实体中,必须要有一个私有的多那一方的实体对象属性,并且提供公有的getter和setter方法. private Integer gid; private String gname; private String gmessage; /** * 在一对多关系中,在一的这一方,必须要有一个多的对象的私有属性 * 别提供共有的getter和sett

MyBatis学习笔记(五)一对多关系

有了之前的student表,address表后,再加上一张表,grade年级表,一个年级对应多个学生,在查询grade表的时候,一并查询学生表. 一条grade数据对就多条学生数据,一对多关系. 一.首先完成从grade----> student的单向联结. 1.建表mybatis_grade. [html] view plain copy package com.skymr.mybatis.model; import java.util.List; public class Grade { p