如何使用Laravel Schema Builder在表上设置注释

如何使用Laravel Schema Builder在表上设置注释,第1张

首先确认,后台的用户表,我设计表叫做badmin,每个管理员有用户名(username),有昵称(nickname),有邮箱(email),有密码(password)

这里玩个花,使用laravel的migration来建立表(实际上可以用不着使用这个工具建立表)

1 安装好最基本的laravel框架

2 创建migration文件:

./artisan migrate:make create-badmin-table

3 发现app/database/migration/下面多了一个php文件:

2014_10_19_090336_create-badmin-table.php

4 往up和down里面增加内容;

<?php

use Illuminate\Database\Schema\Blueprint

use Illuminate\Database\Migrations\Migration

class CreateBadminTable extends Migration {

/**

* Run the migrations.

*

* @return void

*/

public function up()

{

Schema::create(‘badmin', function($table)

{

$table->increments('id’);

$table->string(‘nickname', 100)->unique();

$table->string('username', 100)->unique();

$table->string('email', 100)->unique();

$table->string('password', 64);

$table->timestamps();

});

}

/**

* Reverse the migrations.

*

* @return void

*/

public function down()

{

Schema::drop('badmin’);

}

}

5 配置好local的database,app/config/local/database.php

<?php

return array(

'fetch' =>PDO::FETCH_CLASS,

'default' =>'mysql',

'connections' =>array(

'mysql' =>array(

'driver'=>'mysql',

'host' =>'localhost',

'database' =>'test',

'username' =>'yejianfeng',

'password' =>'123456',

'charset' =>'utf8',

'collation' =>'utf8_unicode_ci',

'prefix'=>'',

),

),

'migrations' =>'migrations',

);

6 创建数据表:

./artisan migrate --env=local

这个时候去数据库看,就发现多了一张badmin表,数据结构如下:

CREATE TABLE ——badmin—— (

——id—— int(10) unsigned NOT NULL AUTO_INCREMENT,

——nickname—— varchar(100) COLLATE utf8_unicode_ci NOT NULL,

——username—— varchar(100) COLLATE utf8_unicode_ci NOT NULL,

——email—— varchar(100) COLLATE utf8_unicode_ci NOT NULL,

——password—— varchar(64) COLLATE utf8_unicode_ci NOT NULL,

——created_at—— timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

——updated_at—— timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

PRIMARY KEY (——id——),

UNIQUE KEY ——badmin_nickname_unique—— (——nickname——),

UNIQUE KEY ——badmin_username_unique—— (——username——),

UNIQUE KEY ——badmin_email_unique—— (——email——)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

要问这里为什么多出了create_at和update_at,这是laravel默认为每个表创建的字段,而且在使用Eloquent进行增删改查的时候能自动更新这两个字段

7 创建个Model:

<?php

use Illuminate\Auth\UserTrait

use Illuminate\Auth\UserInterface

use Illuminate\Auth\Reminders\RemindableTrait

use Illuminate\Auth\Reminders\RemindableInterface

class Badmin extends Eloquent implements UserInterface, RemindableInterface {

use UserTrait, RemindableTrait

protected $table = 'badmin'

protected $hidden = array(‘password’);

public static $rules = [

'nickname' =>'require|alpha_num|min:2',

'username' =>'require',

'email'=>'required|email|unique:users',

'password'=>'required|alpha_num|between:6,12|confirmed',

]

}

这里必须要implements UserInterface和RemindableInterface

8 把model和Auth关联上,修改app/config/auth.php

<?php

return array(

// 默认的用户验证驱动

// 可以是database或者eloquent

'driver' =>'eloquent',

// 只有驱动为eloquent的时候才有用

'model' =>'Badmin',

);

这里的driver可以是eloquent或者database,使用eloquent就告诉Auth组件说,用户认证类是Badmin这个类管的。这里的model是有命名空间的,就是说如果你的admin类是\Yejianfeng\Badmin,这里就应该改成‘\Yejianfeng\Badmin'

9 好了,这个时间其实逻辑部分已经搭建完毕了,你已经可以在controller种使用

Auth::attempt(XXX) 做权限认证

Auth::user() 获取登录用户(一个Badmin类)

等。

10 下面要建立一个用户登录页面:

11 设置路由

<?php

// 不需要登录验证的接口

Route::get('/', ['as' =>'user.login','uses'=>'UserController@getLogin']);

Route::get('user/login', ['as' =>'login', 'uses' =>'UserController@getLogin']);

Route::post('user/login', ['as' =>'login', 'uses' =>'UserController@postLogin']);

// 需要登录验证才能 *** 作的接口

Route::group(array('before' =>'auth’), function()

{

Route::get(‘user/logout', ['as' =>'logout', 'uses' =>'UserController@getLogout']);

Route::get('user/dashboard', ['as' =>'dashboard', 'uses' =>'UserController@getDashboard']);

});

12 设置controller:

<?php

class UserController extends BaseController {

// 登录页面

public function getLogin()

{

return View::make('user.login’);

}

// 登录 *** 作

public function postLogin()

{

if (Auth::attempt(array(‘email'=>Input::get('email’), 'password'=>Input::get(‘password’)))) {

return Redirect::to(‘user/dashboard’)

->with(‘message', ’成功登录‘);

} else {

return Redirect::to('user/login’)

->with(‘message', ’用户名密码不正确‘)

->withInput();

}

}

// 登出

public function getLogout()

{

Auth::logout();

return Redirect::to('user/login’);

}

public function getDashboard()

{

return View::make(‘user.dashboard’);

}

// 添加新用户 *** 作

public function getCreate()

{

return View::make(‘user.create’);

}

// 添加新用户 *** 作

public function postCreate()

{

$validator = Validator::make(Input::all(), User::$rules);

if ($validator->passes()){

$bAdmin = new Badmin();

$bAdmin->nickname = Input::get(‘nickname’);

$bAdmin->username = Input::get(‘username’);

$bAdmin->email = Input::get(‘email’);

$user->password = Hash::make(Input::get(‘password’));

$user->save();

Response::json(null);

} else {

Response::json(['message' =>‘注册失败'], 410);

}

}

}

13 设置下filter,app/filter.php

Route::filter('auth', function()

{

if (Auth::guest())

{

if (Request::ajax())

{

return Response::make('Unauthorized', 401);

}

else

{

return Redirect::guest('/’);

}

}

});

将这里认证失败后的地址转到/ 路径

14 设置views/user/login.blade.php

它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。1、Bundle是Laravel的扩展包组织形式或称呼。Laravel的扩展包仓库已经相当成熟了,可以很容易的帮你把扩展包(bundle)安装到你的应用中。你可以选择下载一个扩展包(bundle)然后拷贝到bundles目录,或者通过命令行工具“Artisan”自动安装。2、在Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便的将“约束(constraints)”应用到关系的双方,这样你就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。3、应用逻辑(Application Logic)可以在控制器(controllers)中实现,也可以直接集成到路由(route)声明中,并且语法和Sinatra框架类似。Laravel的设计理念是:给开发者以最大的灵活性,既能创建非常小的网站也能构建大型的企业应用。4、反向路由(Reverse Routing)赋予你通过路由(routes)名称创建链接(URI)的能力。只需使用路由名称(route name),Laravel就会自动帮你创建正确的URI。这样你就可以随时改变你的路由(routes),Laravel会帮你自动更新所有相关的链接。5、Restful控制器(Restful Controllers)是一项区分GET和POST请求逻辑的可选方式。比如在一个用户登陆逻辑中,你声明了一个get_login()的动作(action)来处理获取登陆页面的服务;同时也声明了一个post_login()动作(action)来校验表单POST过来的数据,并且在验证之后,做出重新转向(redirect)到登陆页面还是转向控制台的决定。6、自动加载类(Class Auto-loading)简化了类(class)的加载工作,以后就可以不用去维护自动加载配置表和非必须的组件加载工作了。当你想加载任何库(library)或模型(model)时,立即使用就行了,Laravel会自动帮你加载需要的文件。7、视图组装器(View Composers)本质上就是一段代码,这段代码在视图(View)加载时会自动执行。最好的例子就是博客中的侧边随机文章推荐,“视图组装器”中包含了加载随机文章推荐的逻辑,这样,你只需要加载内容区域的视图(view)就行了,其它的事情Laravel会帮你自动完成。8、反向控制容器(IoC container)提供了生成新对象、随时实例化对象、访问单例(singleton)对象的便捷方式。反向控制(IoC)意味着你几乎不需要特意去加载外部的库(libraries),就可以在代码中的任意位置访问这些对象,并且不需要忍受繁杂、冗余的代码结构。9、迁移(Migrations)就像是版本控制(version control)工具,不过,它管理的是数据库范式,并且直接集成在了Laravel中。你可以使用“Artisan”命令行工具生成、执行“迁移”指令。当你的小组成员改变了数据库范式的时候,你就可以轻松的通过版本控制工具更新当前工程,然后执行“迁移指令即可,好了,你的数据库已经是最新的了!11、自动分页(Automatic Pagination)功能避免了在你的业务逻辑中混入大量无关分页配置代码。方便的是不需要记住当前页,只要从数据库中获取总的条目数量,然后使用limit/offset获取选定的数据,最后调用‘paginate’方法,让Laravel将各页链接输出到指定的视图(View)中即可,Laravel会替你自动完成所有工作。Laravel的自动分页系统被设计为容易实现、易于修改。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9961765.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存