Laravel 模型 model

Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库交互。每个数据库表都有一个对应的「模型」(一个表对应一个class)用来与该表交互。你可以通过模型查询数据表中的数据,并将新记录添加到数据表中。

在开始之前,请确保在 config/database.php 中配置数据库连接。更多关于数据库的配置信息,请查看

创建模型文件

e.g. 创建文章模块模型

1
php artisan make:model Post

./app 目录下生成 Post.php

1
2
3
4
5
6
7
8
9
10
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{

}

设置注入的字段数据

1
2
3
4
5
class Post extends Model
{
protected $guarded = [];// 不可以注入的字段数据
//protected $fillable = ['title', 'content'];// 可以注入的字段数据
}

如果没有不需要注入的字段,用 protected $guarded = []

模型关联

  • 一对一 hasOne (用户 - 手机号)
  • 一对多 hasMany (文章 - 评论)
  • 一对多反向 belongsTo (评论 - 文章)
  • 多对多 belongsToMany (用户 - 角色)
  • 远层一对多 hasManyThrough (国家 - 作者 - 文章)
  • 多态关联 morphMany (文章/视频 - 评论)
  • 多态多对多 morphToMany (文章/视频 - 标签)

模型关联预加载

1
$books = App\Book::with('author')->get();
1
$books = load('author', 'publisher');

模型关联计数

1
$posts = App\Post::withCount('commnets')->get();

模型的scope

定义

1
2
3
4
public function scopeActive($query)
{
return $query->where('active', 1);
}

使用

1
$users->App\User::popular()->active()->orderBy('created_at')->get();