CakePHP - 使用contain获取关联数据
2017-10-26 13:58
465 查看
当使用
对于
contain默认使用LEFT JOIN查询,在Table类中定义。
contain中的查询只限制关联Model自身,不能限制Primary Model。
find()方法查询数据时,默认不包含任何关联数据。
对于
belongsTo和
hasOne关系,在获取关联数据时只能使用
select和
where从句,其他类型的关联关系则可以使用Query对象提供的所有从句。
contain
加载Primary Model数据及其关联的Model数据。contain默认使用LEFT JOIN查询,在Table类中定义。
contain中的查询只限制关联Model自身,不能限制Primary Model。
//As an option to find() $this->Articles->find('all', [ 'contain' => ['Authors', 'Comments'] ]); //As a method on the query object $this->Articles->find() ->contain(['Authors', 'Comments']) ->all(); //多级关联 $this->Articles->find() ->contain(['Authors'=>['Profiles'], 'Comments']) ->all(); //or $this->Articles->find() ->contain(['Authors.Profiles', 'Comments']) ->all(); //Rest the containments on a query $query = $this->Articles->find(); $query->contain(['Authors', 'Tags'], true);
//Authors hasMany Articles //结果集中的关联Model数据(articles)为多维数组 $this->Authors ->find() ->select(['id', 'name']) ->contain([ 'Articles' => [ 'fields' => ['id', 'title', 'author_id'], //必须包含外键 'conditions' => ['Articles.title LIKE' => '%测试%'], 'sort' => ['Articles.created' => 'DESC'] //sort, not order ] ]) ->all(); //Articles belongsTo Authors //结果集中的关联Model数据(author)为一维数组 $this->Articles ->find() ->select(['id', 'title']) //外键不必须 ->contain([ 'Authors' => function($q) { //Callback形式,Prior to 3.5 return $q->select(['id', 'name']); } ]) ->all(); //3.5+ ->contain('Authors', function($q) { return $q->...; });
相关文章推荐
- CakePHP - 使用matching & join匹配关联数据
- 使用LEFT JOIN多次关联同一个表获取数据不正确的问题
- 使用AR连接关联的数据表获取数据
- 获取XML数据并使用样式表格式化-补遗
- Hibernate获取数据方式与缓存使用
- 使用JDBC4.0操作XML类型的字段(保存获取xml数据)的方法
- 使用AJAX异步获取数据
- VC中ADO使用SQLOLEDB数据驱动时,无法获取存储过程RAISERROR返回的字符串描述
- 在C#中使用正则表达式自动匹配并获取所需要的数据
- Biztalk中使用SQL适配器获取数据并用web服务发布的例子
- 使用Rational Robot测试含有数据关联的Web应用
- HYORM使用篇之获取数据
- 使用XMLHTTP Request Object获取服务器数据
- Hibernate获取数据方式与缓存使用
- 在vb中使用Iphlpapi.dll获取网络信息 第四章 第三节 实例一:网络数据流量图
- 使用XmlReader迭代代替类型化DataSet和IDataReader解析关联数据
- 使用DataSet和DataAdapter插入关联数据
- 使用模板列获取批量获取DataGrid中的数据
- 在C#中使用正则表达式自动匹配并获取所需要的数据
- 使用XMLHTTP Request Object获取服务器数据