跟社区学laravel博客实战3

现在让我们照例先来创建一个新分支。
$ git checkout master
$ git checkout -b modeling-users

 

所有创建的迁移文件都被统一放在 database/migrations 文件夹里。打开该文件夹我们可以看到,Laravel 已默认为我们创建好了三个迁移文件:

database/migrations/2014_10_12_000000_create_users_table.phpdatabase/migrations/2014_10_12_100000_create_password_resets_table.phpdatabase/migrations/2019_08_19_000000_create_failed_jobs_table.php

 

vi database/migrations/2014_10_12_000000_create_users_table.php

当我们运行迁移时,up 方法会被调用;当我们回滚迁移时,down 方法会被调用。

 

 

我们需要运行下面的命令来生成执行迁移,migrate 命令会执行所有未被执行过的迁移。

php artisan migrate

 

Laravel 默认为我们生成了用户模型文件,代码如下所示:
app/User.php

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

Notifiable 是消息通知相关功能引用,
Authenticatable 是授权相关功能的引用。



在 Eloquent 模型中借助对 table 属性的定义,
来指明要进行数据库交互的数据库表名称,在用户模型中,
我们对应要交互的数据库表为 users,因此定义的代码如下:

protected $table = 'users';




Laravel 在用户模型中默认
为我们添加了 fillable 在过滤用户提交的字段,
只有包含在该属性中的字段才能够被正常更新:

    protected $fillable = [
        'name', 'email', 'password',
    ];



最后,
当我们需要对用户密码或其它敏感信息
在用户实例通过数组或 JSON 显示时进行隐藏,
则可使用 hidden 属性:

    protected $hidden = [
        'password', 'remember_token',
    ];

 

 

使用 App\Models 命名空间

Laravel 为我们默认创建的模型文件放置在 app 文件夹下,为了让新手能够更好理解 MVC 模式的开发流程,本教程中将统一使用 app/Models 文件夹来放置所有的模型文件。现在让我们先来创建一个 app/Models 文件夹,并将 User.php 文件放置到其中。

$ mkdir app/Models
$ mv app/User.php app/Models/User.php

在执行完这一步的操作之后,我们还需要执行下面这两个操作:
1、修改 User.php 文件,更改 namespace 为我们新创建的文件夹路径:
app/Models/User.php
<?php

namespace App\Models;

2、编辑器全局搜索 App\User 替换为 App\Models\User,先在 Sublime Text 中可使用快捷键 shift + cmd(ctrl) + f 搜索下总共有几处需要修改:

$ vi app/Http/Controllers/Auth/RegisterController.php

$ vi config/auth.php

$ vi database/factories/UserFactory.php




因为上面的文件改动较大,因此我们需要进行一次 Git 提交,该改动的代码进行保存。


$ git add -A
$ git commit -m "Move user model to models folder"

 

现在让我们将代码切回到主分支中进行合并。

$ git checkout master
$ git merge modeling-users

 

 

//----------以下操作 仅作演示用------------------

 

Article 模型的例子
模型文件可通过多种方式进行创建,下面让我们以文章模型(Article)为例,为你讲解模型文件的创建。
一般情况下,如果我们要自己手动创建一个模型文件,最简单的方式是通过 make:model 来创建。需要注意的一点是,模型类名称使用【     单数    】 形式来命名

$ php artisan make:model Models/Article


模型默认是放置在 app 文件夹下,
因遵循 MVC 的最佳实践而需要把模型文件放置于 app/Models 目录下

同时创建迁移文件
如果需要在创建模型的同时顺便创建数据库迁移,则可以使用 --migration 或 -m 选项,让我们将刚刚生成的模型进行删除,尝试生成迁移文件:

$ rm app/Models/Article.php
$ php artisan make:model Models/Article -m
Model created successfully.
Created Migration: 2018_12_12_090551_create_articles_table

 

Eloquent 表命名约定#

在该文件中,Eloquent Article 模型默认情况下会使用类的「下划线命名法」与「复数形式名称」来作为数据表的名称生成规则。如:

Article 数据模型类对应 articles 表;

User 数据模型类对应 users 表;

BlogPost 数据模型类对应 blog_posts 表;

『约定优于配置』能极大提高开发效率,并且也更有利于团队协作。Laravel 项目中大量的使用了

『约定优于配置』这种设计范式,这也是 Laravel 的另一个可爱之处。

$ vi app/Models/Article.php



<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;


class Article extends Model
{
    protected $table = 'my_articles';
}



如果你需要指定自己的数据表,
则可以通过 table 属性来定义,如上

 

收拾舞台
由于我们刚刚创建的文章模型仅作演示用,因此我们无需对这几个文件的更改进行保存,可通过下面命令进行移除:
$ git add -A
$ git checkout -f

 

 

创建用户对象

首先让我们使用此命令进入 Tinker 环境:
$ php artisan tinker

如果中途想要退出 Tinker,可使用 ctrl + c 快捷键。
通过下面命令我们可以很轻松的创建一个用户对象:


>>> App\Models\User::create(['name'=> 'Summer', 'email'=>'summer@example.com','password'=>bcrypt('password')])

在以上命令中,
我们使用 App\Models\User Eloquent 模型提供的 create 方法,
通过传入一个关联数组来新建一个用户对象。
在我们对用户的 password 进行赋值时,
调用了一个叫 bcrypt 的方法,
将 password 的值进行加密。

 

在前面的章节中我们学过,当使用了 use 对类进行引用之后,便可以对类进行直接调用。为了让

接下来的命令可读性更高,我们使用 use 来引用 App\Models\User Eloquent 模型类:

>>> use App\Models\User

这样我们就可以在后面的操作中直接调用 User 而不是完整的类名 App\Models\User

>>> User::find(1)

User::first()

User::all()

 

假如我不想通过 id 查询表,想通过 email 查询又该如何写呢?

User::where(['email'=>'aufree@yousails.com'])->first()

 

更新用户对象

在用户创建成功之后,我们还可以对用户信息进行更新。有两种方式可以完成用户的更新操作:
第一种是通过给用户对象属性进行赋值,赋值成功后再调用 save 方法进行保存更新;
第二种则是直接调用 update 方法进行更新。

首先,让我们将用户对象从数据库中取出,并赋值给 user 变量。
>>> $user = User::first()

 

通过 save 方法更新
让我们使用属性赋值更新的方法对用户名进行更新,将其名字更改为 Monkey:
>>> $user->name = 'Monkey'
这时,新的用户名已赋值成功,但是 尚未 保存到数据库,因此查看用户信息时我们能够看到,用户名显示的还是之前的 Summer。

让我们来调用 save 方法对用户信息进行保存。
>>> $user->save()

 

通过 update 方法更新

>>> $user->update(['name'=>'Summer'])

 

如何修改时区?

https://learnku.com/laravel/t/17027

config/app.php

'timezone' => env('TIME_ZOME', 'UTC')



config/database.php
.
.
.
    'mysql' => [
        'driver' => 'mysql',
        'timezone'  => env('DB_TIMEZONE','+00:00'),
        .
        .
        .
    ]
    


.env 配置文件里加入

TIME_ZOME=PRC
DB_TIMEZONE=+08:00 

 

https://learnku.com/laravel/t/42186

$temp = User::first();
$temp->save()

$temp 取出第一条数据,紧接着将它存储。故并不会数据修改。

 

现在让我们将代码切回到主分支中进行合并。

$ git checkout master
$ git merge modeling-users

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值