Laravel 7 中文文档

laravel模型使用快速入门

模型文件的位置

App/Models

命名规则

本身laravel对模型的命名没有严格的要求,一般采用 表名(首字母大写).php
如: Member.php User.php Admin.php Goods.php

创建模型

使用artisan命令

1
php artisan make:model 模型文件名

分目录的

1
php artisan make:model Models/User

创建模板并生成迁移文件

1
php artisan make:model Models/User –m

-m 生成迁移文件

模型限制

定义表名($table)

模型所对应的默认表名是在模型后面加【s】,如同表名没有s则操作的时候就会报错。解决方案,指定表名

1
protected $table = ‘member’;

指定主键名($primaryKey)

laravel 中默认的主键 ID 名为 id,如果你创建的表字段中主键 ID 的名称不为 id,则需要通过
$primaryKey 来指定一下。

  • 指定主键的名称
1
protected $primaryKey = ‘kid’;

指定时间戳($timestamps)

默认情况下,模型操作会认为在你的数据库表有 created_atupdated_at
字段。如果你不希望让模型来自动维护这两个字段,可在模型内将 $timestamps
属性设置为 false

  • 时间戳 这里一定要注意它是用的 public
1
public $timestamps = false;

批量赋值($fillable 与 $guarded)

当通过 create 方法来保存数据的时候,你需要先在你的模型上定义 $fillable
$guarded 属性。

  • 批量赋值

白名单

1
protected $fillable = [‘允许添加的字段名’];

黑名单

1
protected $guarded = [‘拒绝添加的字段名’];

CURD基本操作

添加数据

  • 方法一
1
save() # 对象属性方式
  • 方法二
1
create() # 数组方式 需要在模型中设置好fillable或guarded属性
  • 方法三
1
insert() #数组方式

修改数据

  • 方法一

    1
    save() # 对象属性方式
  • 方法二

    1
    update() # 数组

查询数据

  • 查询单条

    1
    first()
  • 查询多条

    1
    get()
  • 条件

    1
    where()
  • 排序

    1
    orderBy()
  • 取指定的值

    1
    value()
  • 取指定的列

    1
    pluck()
  • 查询总记录数

    1
    count()
  • 根据id查询

    1
    findOrFail()

    删除数据

    注意:在laravel里面如果要删除数据,必须先根据条件查询出对应的记录,返回一个对象,然后调用对象的delete方法即可。

  • 删除 一定要指定条件删除

    1
    delete()

模型关联

定时任务

定义调度

App\Console\Commands 目录下创建 Demo.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Foundation\Inspiring;
use Log;

class Demo extends Command {

protected $name = 'demo';//命令名称

protected $description = '描述内容'; // 命令描述,没什么用

/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
log::info('demo');
// 功能代码写到这里
}
}

编辑 app/Console/Kernel.php 文件,将新生成的类进行注册

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel {

/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
\App\Console\Commands\Demo::class,
];

/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('demo')//Test.php中的name
->everyFiveMinutes();//每五分钟执行一次
}

}

如果有多个定时任务,只需参照 Demo.php 再次生成一个,Kernel.php 中的 $commands 数组中再添加新加的类,schedule$schedule->command('新name')->everyFiveMinutes();

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
->cron('* * * * *');    在自定义Cron调度上运行任务
->everyMinute(); 每分钟运行一次任务
->everyFiveMinutes(); 每五分钟运行一次任务
->everyTenMinutes(); 每十分钟运行一次任务
->everyThirtyMinutes(); 每三十分钟运行一次任务
->hourly(); 每小时运行一次任务
->daily(); 每天凌晨零点运行任务
->dailyAt('13:00'); 每天13:00运行任务
->twiceDaily(1, 13); 每天1:00 & 13:00运行任务
->weekly(); 每周运行一次任务
->monthly(); 每月运行一次任务
->monthlyOn(4, '15:00'); 每月415:00运行一次任务
->quarterly(); 每个季度运行一次
->yearly(); 每年运行一次
->timezone('America/New_York'); 设置时区

参考文档