Laravel5.1 模型初探

Laravel的模型也是访问数据库的,它更加面向对象,一个模型对应着一张表 我们可以使用模型对数据做一些增删改查的操作。


1 创建模型

创建模型是可以使用Artisan控制台的:

php artisan make:model Article

一般我比较喜欢连带着migration一起生成:

php artisan make:model Article -m

↑ 执行了上面的Artisan命令后 我们就可以在 /app 下找到我们刚刚创建的模型了,顺便也生成好了migration。


2 模型常用属性

2.1 自定义表名

一个model对应一个表,model对应的表名默认是model名字的复数 即:Article(Model)对应Articles(Table),User(Model)对应Users(Table)。

当然 如果你的Model不想用这种默认方式 也可以自定义:

class Article extends Model
{
    protected $table = ‘K_Articles‘;
}

2.2 自定义主键

Model的主键默认是id,你也可以自定义:

class Article extends Model
{
    protected $primaryKey = ‘article_id‘;
}

2.3 时间戳

在咱的数据表之中 有create_at 和 update_at 两个时间戳 是Laravel自动管理的,如果你不想要自动管理这两个列 可以这样做:

class Article extends Model
{
    public $timestamps = false;
}

2.4 白名单和黑名单

当我们用到批量创建和批量修改时 必须声明黑名单或白名单,在白名单中的属性是可以填充的属性,在黑名单中的属性是不允许被填充的属性:

class Article extends Model
{
    protected $fillable = [‘title‘, ‘body‘];
}

注意:不知道怎么用没关系,3.2我们就会说批量创建。


3 创建数据(模型)

创建模型有两种方法,第一种就是普通的创建,第二种是批量创建。

3.1 普通创建模型

普通创建就是新建一个模型:

    public function getCreateArticle()
    {
        $article =  new Article();
        $article->title = ‘One‘;
        $article->body = ‘Learn Laravel Model‘;
        $article->save();
    }

3.2 批量创建

批量赋值就是使用create方法来生成一个model并返回这个新插入的model,在你使用create前必须检查model中是否声明了黑名单或白名单:

class Article extends Model
{
    protected $fillable = [‘title‘, ‘body‘];
}

↑ 这是我们的白名单

    public function getCreateArticle()
    {
        $article =  Article::create([‘title‘=>‘Two‘, ‘body‘=>‘Test Create Model‘, ‘comment_count‘=>10]);
    }

↑ 这是批量创建模型,有个细节哈 我们在fillable中没有添加comment_count 但是create方法中的数组有comment_count的键值。。。结果呢 comment_count并没有被填充,原因是:它不在白名单中 或者 它在黑名单中。


4 更新

更新跟插入很像,也有两种方法 普通的 和 批量的。

4.1 普通更新

    public function getUpdateArticle()
    {
        $article = Article::find(1);
        $article->title = ‘Article_One‘;
        $article->save();
    }

4.2 批量更新

    public function getUpdateArticle()
    {
        $article =  Article::find(3);
        $article->update([‘title‘ => ‘Three‘, ‘body‘ => ‘Third‘]);
    }

5 查找

其实Model的查找跟之前我们学过的构建器很像。

5.1 获取全部的模型

    public function getIndex()
    {
        $articles = Article::all();
        foreach ($articles as $article) {
            echo $article->title . ‘<br />‘;
            echo $article->body . ‘<br />‘;
        }
    }

5.2 获取单个模型

使用find 通过主键查找:

    public function getIndex()
    {
        $article = Article::find(1);
        dd($article->body);
    }

我们也可以判断是否取到了Model:

    public function getIndex()
    {
        $article = Article::find(2);
        if (!isset($article)){
            abort(404,‘Not Found‘);
        }
        dd($article);
    }

当未取到值是自动报错 应对这种场景 也可以使用findOrFail:

    public function getIndex()
    {
        $article = Article::findOrFail(2);
        dd($article);
    }

5.3 通过约束获取模型

这就是和构建器相似的地方,你可以像约束构建器一样约束它 这里就不多说了 给了例子吧:

    public function getIndex()
    {
        $article = Article::where(‘id‘,‘>‘,2)->orderBy(‘comment_count‘,‘desc‘)->lists(‘title‘)->toArray();
        dd($article);
    }


今天先写这么多,明天说下Model的删除功能。

时间: 2024-08-26 02:27:39

Laravel5.1 模型初探的相关文章

Linux 驱动模型初探3——device

讲device之前,我要引入一个比喻,这个比喻来自一个学长(z2007b).driver是帅哥,device是美女,bus是红娘,bus是提供device和driver配对的场所(方法?).好吧,暂时先这样定,现在要讲的就是美女. 1,老规则,先看看struce device这个美女有哪些特性(成员)和方法 struct device { struct device *parent; struct device_private*p; struct kobject kobj; const char

Laravel5.1 模型--ModelFactory

今天要说的是模型工厂,它是可以快速生成一些测试数据的东西,之前我们介绍过Seeder,当我们使用模型访问数据时 可以用模型工厂搭配Seeder使用. 1 编写一个ModelFactory ModelFactory的路径在 database/factories/ 下: // 这是系统自带的工厂 $factory->define(App\User::class, function ($faker) { return [ 'name' => $faker->name, 'email' =>

Laravel5.1 模型 --多对多关系

多对多关系也是很常用的一种关系,比如一篇文章可以有多个标签,一个标签下也可以有多篇文章,这就是一个典型的多对多的关系. 1 实现多对多关系 多对多关系我们需要三张表,一张是文章另一张是标签,第三章表是它们的中间表 因为多对多关系需要抽离成两个一对多关系嘛. 1.1 文章结构 public function up() { Schema::create('articles', function (Blueprint $table) { $table->increments('id'); $table

Laravel5.1 模型--关联关系(复杂)

关联关系不只是我之前记录的一对一,一对多,多对多这些相对简单的关系,在实际开发中我们会遇到比较复杂的关系. 远程一对多 远程一对多听着比较花哨 举个栗子就很清楚了,比如用户和文章是一对多的关系,国家和用户也是一对多的关系,这样看来 用户是可以作为中间关联对象来为国家和文章间建立一对多的关系,如果还是云里雾里 就直接看代码: 我们创建一个国家表: php artisan make:migration create_countries_table --create=countries public

Laravel5.1 模型 --软删除

软删除是比较实用的一种删除手段,比如说 你有一本账 有一笔记录你觉得不对给删了 过了几天发现不应该删除,这时候软删除的目的就实现了 你可以找到已经被删除的数据进行操作 可以是还原也可以是真正的删除. 1 普通删除 在软删除之前咱先看看普通的删除方法: 1.1 直接通过主键删除 public function getDelete() { Article::destroy(1); Article::destroy([1,2,3]); } 1.2 获取model后删除 public function

Laravel5.1 模型--删除

今天我们来看看如何删除数据 delete删除模型 获取到模型,执行delete方法就好: public function destroy($id) { $article = Article::findOrFail($id); if ($article->delete()){ echo '删除成功'; }else{ echo '删除失败'; } } delete方法会返回一个bool值. destory删除模型 相比较delete而言更加简洁,只要你知道id字段就可以使用: $delete = \

Laravel5.1 模型 --一对一关系

这篇文章主要记录模型的一对一关系,关联关系是Model的一种非常方便的功能. 1 实现一对一关系 1.1 准备工作 首先我们需要创建两张表和对应的两个模型,第一个模型是用户表,第二个模型是账号表. 这里 我们的逻辑是:一个用户信息下只能有一个账号,一个账号只能被一个用户所拥有,这就是一对一关系. 1.1.1 用户信息表 生成模型和迁移文件: php artisan make:model UserInfo -m 编写迁移文件(表规格): public function up() { Schema:

Laravel5.1 模型--查询作用域

所谓的查询作用域就是允许你自定义一个查询语句 把它封装成一个方法. 1 定义一个查询作用域 定义查询作用域就是在模型中声明一个scope开头的方法: public function scopeHotArticle($query) { return $query->orderBy('comment_count','desc')->first(); } 然后可以这样使用: public function getIndex() { $hot = Article::hotArticle(); dd($

Laravel5.1 模型--查询

前两天病了..一直没写笔记,今儿个来看看Model在实际开发中的一些简单使用,首先 我们来为今天的学习做个铺垫,也当做复习了 准备工作 1.生成表 php artisan make:migration create_articles_table --create=articles <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateArt