CakePHP - 使用matching & join匹配关联数据
2017-10-26 15:16
483 查看
在获取Primary Model数据及其关联数据时,可以使用
INNER JOIN连接查询,可使用
匹配的关联数据保存在Entity的
使用
-
-
-
matching及
join从句对关联数据进行匹配。
matching
匹配指定的关联数据,但结果集中并不包含关联数据。INNER JOIN连接查询,可使用
distinct()方法去除重复数据。
匹配的关联数据保存在Entity的
_matchingData属性中。
使用
notMatching执行相反的操作,LEFT JOIN查询,可与
matching结合使用。
//Authors HasMany Articles $query = $this->Authors->find(); $query->matching('Articles', function($q) { return $q->where(['Articles.created >=' => new DateTime('-10 days')]); }); //Deep associations $query = $this->Products ->find() ->matching('Shops.Cities.Countries', function($q) { return $q->where(['Countries.name' => 'China']); } ) ->distinct(); //去重 //Using passed variables $username = 'jack'; $query = $this->Articles->find()->matching('Comments.Users', function($q) use ($username) { return $q->where(['username' => $username]); });
innerJoinWith
作用同matching,但没有额外的字段及
_matchingData属性被添加到结果集中。
leftJoinWith
Don’t load any columns from the specified associations into the result set//查询Primary Model数据及统计关联表记录数 $query = $articlesTable->find(); $articles = $query //->select($articlesTable) ->select([ 'comments_count' => $query->func()->count('Comments.id') ]) ->leftJoinWith('Comments') ->group(['Articles.id']) ->having(['comments_count >' => 10]) //设置查询条件 ->enableAutoFields(true) //作用同select($articlesTable) ->all(); //Deep associations $query = $authorsTable ->find() ->select(['total_articles' => $query->func()->count('Articles.id')]) ->leftJoinWith('Articles.Tags', function($q) { return $q->where(['Tags.name' => 'CakePHP']); }) ->group(['Authors.id']) ->enableAutoFields(true);
where和
having的区别
-
where是从数据表中的字段直接进行筛选;
-
having是从之前的查询字段中进行筛选;
-
having常常和
group分组查询组合使用;
相关文章推荐
- CakePHP - 使用contain获取关联数据
- 二表关联查询 而当某数据不能互相匹配使用默认值代替
- update 语句中 使用 join 关联 其他表 进行 刷数据
- Hive&SqlServerql:inner join on条件中如果两边都是空值的情况下,关联结果中会把数据给过滤掉。
- R语言使用merge函数匹配数据(vlookup,join)
- Oracle的CONNECT BY LOOP我自己使用的数据。关于where 跟join.
- 使用T-SQL实现数据导出/导入(SQLSERVER—>SQLSERVER)
- ASP.NET的gridview设置数据格式(DataFormatString="{}")与 String.Format 使用总结
- 如何使用部分字段匹配形成关联下拉框组
- 两表关联进行更新,使用T2的数据更新T1(等值更新)
- 使用FDO封装XML&ADO实现与服务端数据通信
- JavaEE--------> Hibernate入门 -->使用Hibernate实现数据的删改
- 使用secondary sort实现数据关联 完整示例代码
- Extjs和Asp.NET后台的数据交互(一) => Newtonsoft.Json 使用简介
- 使用LINQ保存关联数据时,出现错误FOREIGN KEY 约束问题的原因
- 在Cakephp中使用XML和Memcache持久化保存数据
- 在C#中使用正则表达式自动匹配并获取所需要的数据
- 使用ADO EXTENSION榜定数据表之后,在读数据时出现类似"屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯"的情况
- 在C#中使用正则表达式自动匹配并获取所需要的数据
- 使用T-SQL实现数据导出/导入(SQLSERVER—>SQLSERVER)