zoukankan      html  css  js  c++  java
  • Eloquent ORM 学习笔记

      最近在学习Laravel,觉得ORM功能很强大,我这里只是简单探索了一点,如果有更好的笔记,还请分享。

      因为重点在于Eloquent ORM,所以路由设置,控制器就不详细描述了,这里直接进入Models么模块。

     

      1.数据库准备(Mysql)

      在这里需要创建users和users_ext两张表,并初始化数据  

     1 CREATE TABLE
     2 IF NOT EXISTS users (
     3     iAutoId INT (11) NOT NULL AUTO_INCREMENT,
     4     sNmame VARCHAR (20),
     5     iStatus TINYINT (4),
     6     iCreateTime INT (11),
     7     PRIMARY KEY (iAutoId)
     8 ) ENGINE = INNODB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;
     9 
    10 INSERT INTO users (sNmame, iStatus, iCreateTime)
    11 VALUES
    12     ('test1', 1, 1400085387),
    13     ('test2', 1, 1400085387),
    14     ('test3', 1, 1400085387),
    15     ('test4', 1, 1400085387),
    16     ('test5', 1, 1400085387),
    17     ('test6', 1, 1400085387);
    18 
    19 CREATE TABLE
    20 IF NOT EXISTS users_ext (
    21     iAutoId INT (11) NOT NULL AUTO_INCREMENT,
    22     iAge DECIMAL (3, 0),
    23     sSex TINYINT (4),
    24     iUserID INT (11),
    25     PRIMARY KEY (iAutoId)
    26 ) ENGINE = INNODB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;
    27 
    28 INSERT INTO users_ext (iAge, sSex, iUserID)
    29 VALUES
    30     (24, 1, 1),
    31     (109, 0, 2),
    32     (25, 1, 3),
    33     (20, 1, 5),
    34     (68, 0, 4),
    35     (48, 1, 6);

      2.配置数据库

      在database.php中添加数据库配置:

      

     1 <?php
     2 
     3 return [
     4 
     5     'fetch' => PDO::FETCH_CLASS,
     6 
     7     'default' => 'user',
     8 
     9     'connections' => [
    10         'user' => [
    11             'driver'    => 'mysql',
    12             'host'      => 'localhost:3306',
    13             'database'  => 'test',
    14             'username'  => 'root',
    15             'password'  => 'root',
    16             'charset'   => 'utf8',
    17             'collation' => 'utf8_unicode_ci',
    18             'prefix'    => '',
    19         ],
    20     ]
    21 ];

      3.创建UserModel

      在appmodels下创建UserModel.php  

    1 <?php
    2 
    3 class UserModel extends Eloquent {
    4     protected $table = 'users';
    5     protected $primaryKey = 'iAutoID';
    6     protected $connection = 'user';
    7 }

      这样一个User模型就创建成功了,代码很简单。至于其中成员变量的含义,相信都能看得懂,依次代表的是表名称、主键、数据库连接标识(配置文件中的)。

     

      5.使用UserModel

      现在你可以在任何地方使用了。控制器,路由里面都可以用。下面就在做个简单的列子:

      现在有查询语句:  

     1 SELECT
     2     users.sNmame,
     3     users.iCreateTime,
     4     users_ext.iAge,
     5     users_ext.sSex
     6 FROM
     7     users
     8 LEFT JOIN users_ext ON users.iAutoId = users_ext.iUserID
     9 WHERE
    10     users.iStatus = 1
    11 AND users_ext.sSex = 0
    12 ORDER BY
    13     users.iCreateTime
    14 LIMIT 0,
    15  1

      

      这里是简单的一个查询语句,接下来就以ORM的形式实现:

    1 public function getUsers(){
    2 
    3         $select = 'users.sNmame,users.iCreateTime,users_ext.iAge,users_ext.sSex';
    4         $resData = UserModel::selectRaw($select)->leftJoin('users_ext','users.iAutoId','=','users_ext.iUserID')->where('users.iStatus','=',1)->where('users_ext.sSex','=',0)->skip(0)->limit(1)->get();
    5         var_dump($resData->toArray());
    6         exit();
    7 }

      

      下面是查询结果:

      

      ok ,以上只是对查询做了一个简单的例子,还有很多需要研究,比如模块之间的关联等等。

      

      

      

  • 相关阅读:
    MagicZoom bug-Strict Standards: Only variables should be assigned by reference Error
    Web大文件(夹)上传(断点续传)控件-Xproer.HttpUploader6
    在PHP中,通过filesize函数可以取得文件的大小,文件大小是以字节数表示的。如果要转换文件大小的单位,可以自己定义函数来实现。
    PHP正则匹配6到16位字符组合(且只能为数字、字母、下划线)
    Windows下PHP版本选取
    简单配置nginx使之支持pathinfo
    PHP如何关闭notice级别的错误提示
    php开启pathinfo 模式
    php 5.3新增的闭包语法介绍function() use() {}
    Object.prototype.toString.call() 区分对象类型
  • 原文地址:https://www.cnblogs.com/brudeke/p/4227711.html
Copyright © 2011-2022 走看看