首页 > 开发 > PHP > 正文

Laravel 5 框架入门(四)完结篇

2024-05-04 22:37:41
字体:
来源:转载
供稿:网友

Page 和评论将使用 Eloquent 提供的“一对多关系”。最终,我们将得到一个个人博客系统的雏形,并布置一个大作业,供大家实战练习。

1. 初识 Eloquent

Laravel Eloquent ORM 是 Laravel 中非常重要的部分,也是 Laravel 能如此流行的原因之一。中文文档在:

1. http://laravel-china.org/docs/5.0/eloquent

2. http://www.golaravel.com/laravel/docs/5.0/eloquent/

在前面的教程中已经建立好的 learnlaravel5/app/Page.php 就是一个 Eloquent Model 类:

<?php namespace App;use Illuminate/Database/Eloquent/Model;class Page extends Model { //}

若想进一步了解 Eloquent,推荐阅读系列文章:深入理解 Laravel Eloquent

2. 创建 Comment 模型

首先我们要新建一张表来存储 Comment,命令行运行:

代码如下:
php artisan make:model Comment

成功以后,修改 migration 文件 learnlaravel5/database/migrations/***_create_comments_table.php 的相应位置为:

Schema::create('comments', function(Blueprint $table){ $table->increments('id'); $table->string('nickname'); $table->string('email')->nullable(); $table->string('website')->nullable(); $table->text('content')->nullable(); $table->integer('page_id'); $table->timestamps();});

之后运行:

代码如下:
php artisan migrate

去数据库里瞧瞧,comments 表已经躺在那儿啦。

3. 建立“一对多关系”

修改 Page 模型:

<?php namespace App;use Illuminate/Database/Eloquent/Model;class Page extends Model { public function hasManyComments() {  return $this->hasMany('App/Comment', 'page_id', 'id'); }}

搞定啦~ Eloquent 中模型间关系就是这么简单。

模型间关系中文文档:http://laravel-china.org/docs/5.0/eloquent#relationships

4. 前台提交功能

修改 Comment 模型:

<?php namespace App;use Illuminate/Database/Eloquent/Model;class Comment extends Model { protected $fillable = ['nickname', 'email', 'website', 'content', 'page_id'];}

增加一行路由:

代码如下:
Route::post('comment/store', 'CommentsController@store');

运行以下命令创建 CommentsController 控制器:

代码如下:
php artisan make:controller CommentsController

修改 CommentsController:

<?php namespace App/Http/Controllers;use App/Http/Requests;use App/Http/Controllers/Controller;use Illuminate/Http/Request;use Redirect, Input;use App/Comment;class CommentsController extends Controller { public function store() { if (Comment::create(Input::all())) {  return Redirect::back(); } else {  return Redirect::back()->withInput()->withErrors('评论发表失败!'); } }}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表