Laravel

● 创建controller

php artisan make:controller TestController

php artisan make:controller TestController --plain //不会产生预定义的函数

● Migration

使用命令创建数据库、表;

databases/migrations目录下会存在迁移文件,每个文件会对应一个表,当使用php artisan migrate命令,就会生成对应的表。

php artisan migrate:rollback撤销上一步的操作,例如当执行了php artisan migrate命令后,在执行php artisan migrate:rollback,则新创建的表又会被删除;

php artisan make:migration create_articles_table --create='articles' 命令创建新的migration文件,参数--create指定表名

● eloquent

在app文件夹下创建model文件,命令:

php artisan make:model Article

命令执行后会在app目录下生成Article model文件

同时Article model对应article这张表

● tinker命令

php artisan tinker,进入交互模式,可以输入PHP脚本,操作Article model对应的表。当然,这些脚本也可以写到Article model里,这里只是能交互地看到效果:

$article = new App\Article ; //实例化

$article->title = 'My first blog'; //设置表的字段属性

$article->content = 'I am very happy today!'; 

$article->create_at = 123;

$article  ; //输出刚才实例化的对象

$article->save() ; //将设置写入数据库

要在model中加入下面两条语句,否则,save会出错

class Article extends Model
{
protected $table = 'article'; //如果不指定表明,则该model对应model名的复数,即articles
public $timestamps = false; //默认情况下,Eloquent期望表中存在created_at和updated_at两个字段,在执行插入语句时,会默认加入这两个字段。这里去掉这个默认的规则,以免影响灵活性

}

此时,查看表,里面插入了一条数据

$article->toArray(); //将对象转化成一个数组

$first = App\Article::find(1); //找到第一条数据

$first->title = 'My first blog!'; //更新title字段

$first->save(); //保存

 

$second= App\Article::where('create_at', '=', 123)->get(); //查找,返回collection

$second= App\Article::where('create_at', '=', 123)->first(); //查找,返回第一条数据

 

$article = App\Article::create(['title'=>'My second blog', 'content'=>'I am very sad today.', 'create_at'=>456]); //一步添加一条记录

报错:Illuminate\Database\Eloquent\MassAssignmentException with message 'title'

原因是laravel默认不允许直接填充数据。需在model加入下面的语句:

    protected $fillable = ['title', 'content', 'create_at'];

将需要添加的字段都填入数组中。

 

$article->update(['title'=>'My second blog...']); //直接更新

 

● 使用illuminate/html

下载源码文件:https://github.com/illuminate/html/tree/master

解压缩,将文件夹重命名为Html,放到目录:/vendor/laravel/framwork/src/Illuminate下

修改配置文件/config/app.php:

找到 ‘providers’ => [ 
添加数组元素

 Illuminate\Html\HtmlServiceProvider::class,

‘aliases’ => [ 
添加数组元素

  'Form'      => Illuminate\Html\FormFacade::class,
● 表单验证

方法一:

使用命令:php artisan make:request  CreateArticleRequest

会在app/Http/Requests/下创建CreateArticleRequest.php文件

目前,因为没有用户,暂时将authorize函数的返回值改为true;

rules函数里定义了规则

在rules函数的返回数组里添加一下内容:

'title'=>'required',

'content'=>'required',

每一个项目的多个规则用|隔开,例如:

'title'=>'required|min:3',意思是不能为空,且至少三个字节长度

更多的规则可在laravel官网上找到:https://docs.golaravel.com/docs/5.1/validation/

然后将控制器中,store函数的参数改为Requests\CreateArticleRequest $request类型:

public function store(Requests\CreateArticleRequest $request)

这样传过来的表单数据就会经过验证,若不符合前制定的rules,则不会执行store的函数体,并且会跳转到create视图页面,同时返回一个$errors变量,

可在create视图里用添加如下代码,打印出错误提示信息:

@if ($errors->any())
<ul class='list-group'>

@foreach($errors->all() as $error)
<li class='list-group-item list-group-item-danger'>{{$error}}</li>

@endforeach
</ul>
@endif

方法二:使用validate方法,在store函数最前面添加如下两行:

$rules = ['title'=>'required', 'content'=>'required'];
$this->validate($request, $rules);

● 视图控制器绑定:

php artisan route:list查看所有路由

Route::resource('article', 'ArticleController'); //将ArticleController里的方法按照laravel的默认的规则绑定到视图

php artisan route:list查看所有路由结果如下:

● Form-Model-Binding:

将表单的open改成model,并指定控制器传来的$article变量:

{!! Form::open(['method'=>'PATCH', 'url'=>'/article/' . $article->id]) !!}

{!! Form::model($article, ['method'=>'PATCH', 'url'=>'/article/' . $article->id]) !!} 

 就可以实现内容的自动填充.

当然也可以不是用form-model-binding,而直接将控制器的内容填充到表单中

● 视图包含公共页面:

例如,在resources/views/errors/下建一个页面list.blade.php,将公共的代码放入其中,通过@include('errors.list');指令就可以将这些代码包含进去

● 登陆注册:

laravel提供了登陆注册的模块,指定表名为users

注册后会默认跳转到/home页,修改的方法为,在AuthController里添加下面的语句:

    protected $redirectPath = '/';

 

● Eloquent Relationship

即一对一,一对多,多对多的关系

user和article是一对多的关系,因此,可以在user Model里添加这个函数,获得某个用户的所有article:

/*用户和文章是一对多的关系*/
public function articles()
{
  return $this->hasMany('App\Article', 'user_id', 'id'); //第二个参数,代表外键在article表中的字段名
}

article和user是多对一的关系,因此,可以在article Model里添加这个函数,获得article对应的用户:

/*文章和用户是多对一的关系*/
public function user()
{
return $this->belongsTo('App\User', 'user_id', 'id');
}

转载于:https://www.cnblogs.com/volcanorao/p/8512095.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值