CakePHP 3.2 数据库访问和ORM篇
2016-03-05 18:17
465 查看
Cake数据库访问
1.简单查询案例
CakePHP3.X的语法不同于2.0的语法,随着PHP的升级,CakePHP的语法更加的近似于TP等一些框架的语法use Cake\ORM\TableRegistry; $articles = TableRegistry::get('Articles'); $query = $articles->find(); foreach ($query as $row) { echo $row->title; }
当在控制器内操作数据库的查询等操作必须引入 use Cake\ORM\TableRegistry; 只有这样这样才能对表、对应的MODEL接口进行操作.
当我们想调用Table.phpMODEL文件,必须先写一下引入模板
$articles = TableRegistry::get('Access');
2.条件查询
$articles = TableRegistry::get('Access')->where('id'=>'1')和20版本一样3.0也具备查询数量的方法封装
$articles = TableRegistry::get('Access')->where('id'=>'1')->first(); <pre name="code" class="php">$articles = TableRegistry::get('Access')->where('id'=>'1')->all();
这样查出来的数据无论在页面调试和调用的时候都会遇到不小的麻烦,因为这样查出来的数据不会看到好多数据是调试信息,而有的数据是为了保护也根本取不到,那么我们用toArray()方法进行装换一下
<pre name="code" class="php">$articles = TableRegistry::get('Access')->where('id'=>'1')->all()->toArray();
3.联合查询
首先介绍一下简单的两表查询,cake3.0关联表查询方法有很多,但是因为用习惯了2.0的原因,自己比较喜欢下面这种$query = $articles->find() ->hydrate(false) ->join([ 'table' => 'comments', 'alias' => 'c', 'type' => 'LEFT', 'conditions' => 'c.article_id = articles.id', ]);
当多添加关联的时候
$query = $articles->find() ->hydrate(false) ->join([ 'c' => [ 'table' => 'comments', 'type' => 'LEFT', 'conditions' => 'c.article_id = articles.id', ], 'u' => [ 'table' => 'users', 'type' => 'INNER', 'conditions' => 'u.id = articles.user_id', ] ]);
4.插入数据
3.0的插入数据也有多种,下面介绍下其中的两种1.这种方法是对象的写法,先创建一个实体
$res=TableRegistry::get('Allgroups'); $article=$res->newEntity(); $article->mcd='asdf'; $res->save($article);2.配合表查询的插入
$select = $articles->find() ->select(['title', 'body', 'published']) ->where(['id' => 3]); $query = $articles->query() ->insert(['title', 'body', 'published']) ->values($select) ->execute();
5.更新数据
封装好的SQL执行法通用都是用“->”来调用的<pre name="code" class="php">$res=TableRegistry::get('Allgroups');$query = $res
->query()
->update()
->set(['status'=>'2')
->where(['id'=>1])
->execute();
6.删除数据
<pre name="code" class="php"><pre name="code" class="php">$res=TableRegistry::get('Allgroups');
$query = $res->query();$query
->delete()->where(['id' => $id])->execute();
相关文章推荐
- PHP 图片上传生成缩略图代码
- PHP 中实现GZIP压缩页面输出实例
- PHP 读取数据库内容并以二维数组按指定列输出实例
- CakePHP3.2 文件接口篇
- vsftpd配置文件讲解
- 适用于 php-5.2 的 php.ini 中文版
- ThinkPHP函数详解:C方法
- PHP - __clone 对象克隆
- 新版thinkphp3.2使用模板主题的方法
- php编写的抽奖程序中奖概率算法
- PHP strstr()函数详解
- PHP实现页面静态化——全部纯静态化
- contentProvider
- tp3.2不能自动加载公共配置文件config.php
- Windows环境下PHP开发环境搭建 - 图文完全教程
- PHP换行符详解 PHP_EOL,<br />
- lamp环境php测试页面打不开问题之一。。。
- ThinkPHP - 模型
- php-cgi 与 php-fpm 区别?
- PHPmyadmin的安装与配置