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 CreateArticlesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create(‘articles‘, function (Blueprint $table) {
            $table->increments(‘id‘);
            $table->timestamps();
            // 定义字段
            $table->string(‘title‘);
            $table->text(‘content‘);
            $table->string(‘author‘);
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop(‘articles‘);
    }
}
php artisan migrate

2、创建模型

 php artisan make:model Models/Article

使用factory创建测试数据

在实际开发中,我们需要创建表后就开始测试数据,这时我们需要很多数据 不可能一条一条的手动添加 这时需要用到模型工厂-ModelFactory

它位于:\database\factories\ModelFactory.php

<?php

/*
|--------------------------------------------------------------------------
| Model Factories
|--------------------------------------------------------------------------
|
| Here you may define all of your model factories. Model factories give
| you a convenient way to create models for testing and seeding your
| database. Just tell the factory how a default model should look.
|
*/

$factory->define(App\User::class, function ($faker) {
    return [
        ‘name‘ => $faker->name,
        ‘email‘ => $faker->email,
        ‘password‘ => str_random(10),
        ‘remember_token‘ => str_random(10),
    ];
});

其中laravel默认为我们提供了一个User的factory,下面我们自己写一个:

$factory->define(App\Models\Article::class, function ($faker){
    // 返回我们想要的数据格式
    return [
        ‘title‘ => $faker->sentence,
        ‘content‘ => $faker->paragraph,
        ‘author‘ => $faker->name,
    ];
});

因为是批量插入,所以我们在模型中指明我们的白名单(之后详细讲):

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

之后 我们在tinker里批量产出数据吧:

php artisan tinker

呼出tinker之后 我们来写PHP代码吧:

factory(App\Models\Article::class,20)->create();

enter之后 就生成了20条数据,如此便利神奇,实在好用有木有,快看看数据库把

查询操作--取出模型数据

我们可以使用all()方法来获取所有模型:

Route::get(‘/articles‘,function (){
    $articles = \App\Models\Article::all();
    dd($articles);
});

也可以使用条件语句过滤:

Route::get(‘/articles‘,function (){
    $articles = \App\Models\Article::where(‘id‘,‘<‘,‘5‘)->orderBy(‘id‘,‘desc‘)->get();
    dd($articles);
});

我们也可以使用一些条件来取得一条数据:

    $articles = \App\Models\Article::where(‘id‘,1)->first();
    dd($articles);

还有节俭的写法:

    $articles = \App\Models\Article::find(1);
    dd($articles);

当记录没有找到会在页面上显示 null,如果我们想捕捉一些信息可以使用findorfail来抛出一个404页面:

    $articles = \App\Models\Article::findOrfail(100);
    dd($articles);

聚合查询

如果我们要对查询结果进行一些计算统计,可以用聚合函数,比如获取文章总数:

    $count = \App\Models\Article::where(‘id‘,‘<=‘,‘11‘)->count();
    dd($count);
时间: 2024-08-05 17:38:24

Laravel5.1 模型--查询的相关文章

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

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

ThinkPHP5——模型查询返回的对象转换为数组

使用模型查询的返回的结果集为对象,其中里面的数据,TP5框架会自动对里面的data:protected该项进行处理. 但有时我们就想要数据,就想返回一个数组就可以了,怎么办?有两种方法可以实现: 方法一:找到TP5框架中的database.php文件,该文件中找到 resultset_type 该项,将后面的 array 改成 \think\Collection [注意大小写] // 数据集返回类型 'resultset_type' => 'array',  改为 // 数据集返回类型 'res

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 = \

搜索引擎的检索模型-查询与文档的相关度计算

1. 检索模型概述 搜索结果排序时搜索引擎最核心的部分,很大程度度上决定了搜索引擎的质量好坏及用户满意度.实际搜索结果排序的因子有很多,但最主要的两个因素是用户查询和网页内容的相关度,以及网页链接情况.这里我们主要总结网页内容和用户查询相关的内容. 判断网页内容是否与用户査询相关,这依赖于搜索引擎所来用的检索模型.检索模型是搜索引擎的理论基础,为量化相关性提供了一种数学模型,是对查询词和文档之间进行相似度计算的框架和方法.其本质就是相关度建模.如图所示,检索模型所在搜索引擎系统架构位置: 当然检

ThinkPHP5.0 模型查询操作

1.获取单个数据 //取出主键为1的数据 $user = User::get(1); echo $user->name; // 使用数组查询 $user = User::get(['name' => 'thinkphp']); // 使用闭包查询 $user = User::get(function($query){ $query->where('name', 'thinkphp'); }); echo $user->name; //实例化模型后调用查询 $user = new U

django基础知识之模型查询:

查询集表示从数据库中获取的对象集合 查询集可以含有零个.一个或多个过滤器 过滤器基于所给的参数限制查询的结果 从Sql的角度,查询集和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点 查询集 字段查询:比较运算符,F对象,Q对象 查询集 在管理器上调用过滤器方法会返回查询集 查询集经过过滤器筛选后返回新的查询集,因此可以写成链式过滤 惰性执行:创建查询集不会带来任何数据库的访问,直到调用数据时,才会访问数据库 何时对查询集求值:迭代,序列化,与if合用 返回查询

2 Model层 - 模型查询

1.简介 查询集表示从数据库中获取的对象集合 查询集可以含有零个.一个或多个过滤器 过滤器基于所给的参数限制查询的结果 从Sql的角度,查询集和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点 查询集 字段查询:比较运算符,F对象,Q对象 2.查询集 在管理器上调用过滤器方法会返回查询集 查询集经过过滤器筛选后返回新的查询集,因此可以写成链式过滤 惰性执行:创建查询集不会带来任何数据库的访问,直到调用数据时,才会访问数据库 何时对查询集求值:迭代,序列化,与if