Eloquent-ORM简介、模型的建立及查询数据
简介
Laravel自带的Eloquent ORM是一个优美简洁的ActiveRecord实现,用来实现数据库操作。
每个数据表都有一个与之相对应的“模型model”用于和数据表交互。
模型的建立
在app目录下创建Student.php文件,作为模型文件。
// Eloquent-ORM 每张表对应一个模型
// 因为在app下 所以命名空间就是App
namespace App;
use Illuminate\Database\Eloquent\Model;
// 继承自模型的基类
class Student extends Model
{
// 指定表名 与表进行关联
protected $table = 'student';
// 默认情况以id作为主键,如不是Id,需要手动指定
protected $primaryKey = 'id';
}
ORM中的查询方法
在app/Http/Controllers/StudentController.php中
namespace App\Http\Controllers;
// 使用App\Student这个命名空间
use App\Student;
use Illuminate\Support\Facades\DB;
class StudentController extends Controller
{..}
all() 查询表的所有记录
注意Student是app下的student这个模型,得到的结果是一个对象集合。
$students = Student::all();
dd($students);
dd()是一个调试函数。可以查看数组等。
其中Items中存放所有行,每一行的attributes属性中存放该行的所有列值。
find()
根据主键 返回数据,查找的是一行记录,返回的是student模型的对象,attributes中存放数据
$student = Student::find(1001);
findOrFail()
根据主键查找 如果找不到就抛出异常。
$student = Student::findOrFail(1011);
查询构造器在ORM中的使用
get()查找所有记录
$students = Student::get();
得到的结果与Student::all()相同。
first()
first返回一个student对象 作用等同find。
first:返回集合中的第一条数据。
$students = Student::where('id', '>', '1001')
->orderBy('age', 'desc')
->first();
chunk
chunk(查询数量, function(结果集) {})
Student::chunk(2, function ($students) {
var_dump($students);
});
每次输出2行数据,直到所有数据输出完毕为止。
聚合函数
// 求出表中所有的行
$num = Student::count();
// 求最大值
$max = Student::where('id', '>', '1001')->max('age');