前言
好久没有写博客了,差点忘了这个坑,现在要做公司的项目,赶紧回来学习下laravel
路由
路由用白话讲就是把用户访问的地址,和你自己的控制器进行绑定,是用户能访问到你的控制器。
基本控制器
<?php
Route::get('/', function () {
return view('welcome');
});
?>
这就是最基本的路由,当你访问应用根目录的时候,这个路由将把你引导到一个视图文件中,这种路由我们也可以叫视图路由。
路由绑定控制器
Route::get('/','Master\SiteController@index');
路由约束
//通过where()可以使用正则来约束,传递路由的数据
Route::get('user/{id}','Master\SiteController@user')
->where('id','[0-9]+');
如果想在路由里加入参数呢?
那我们先要引入控制器概念
控制器
首先建立控制器,必须要遵守laravel的约定,继承laravel的基类。
<?php
namespace App\Http\Controllers;
use App\User;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* 展示给定用户的信息。
*
* @param int $id
* @return Response
*/
public function show($name)
{
echo 'info-'.$name;
}
}
路由:
Route::get('info/{name}','Master\SiteController@show');
这样就将你的控制器与路由绑定在一起了,现在可以试试打开本地网址看看。
自定义函数定义与使用
我们可以使用自己定义的函数,参考这里
一旦加载自定义函数成功,那么就可以在任何控制器里加载函数了。
模型
laravel最强大的地方就是他们的ORM系统,Eloquent ORM,点击了解。
首先我们创建一个模型,我们只用优雅的命令行就行。
php artisan make:model Site
在你的APP目录下面就会自动出现Site.php,这个php中已经帮你自动继Eloquent。接下来我们需要绑定表名,当然默认情况下,默认关联的表名是classname的复数形式,在这里就是sites,但是我们没有这个表,所以我们还是要指定表名的。
class Site extends Model
{
//指定表名
protected $table = 'user';
//指定表主键
protected $primaryKey = 'user_id';
}
如果你表的主键不是以id为命名的话,那么你也要指定主键的。
使用模型对象查询数据
/**
* 数据查询
*/
public function userList()
{
$list = Site::all();
dd($list);
}
dd()
这个方法是laravel专门用来调试对象的,方法可以把对象的结构给打印出来。
如图:
插入数据
save()
添加数据
/**
* 数据添加,用save()
*/
public function userAdd()
{
$user = new Site();
$user->user_name = 'wangyaxiong';
$user->email = '177379557@qq.com';
$user->phone = 17737281981;
$user->save();
}
create()
添加数据
/**
* 数据创建,用create()
*/
public function userAddCreate()
{
$user = Site::create(['email'=>'9828193XX@qq.com','phone'=>1355445355X,'user_name'=>'morty']);
//好用的打印对象结构的方法
dd($user);
}
注意save()
与create()
的区别:
- 使用
save()
需要先new一个新的模型对象,create()
不用。 - 使用
create()
需要先在你的模型上指定 fillable 或 guarded 的属性,因为所有的 Eloquent 模型在默认情况下都不能进行批量赋值。
/**
* 可以被批量赋值的属性。
*
* @var array
*/
protected $fillable = ['user_name'];
当然我们也可以用保护名单guarded()
//制定create的保护名单
protected $guarded = ['is_admin'];
注意:用save()的时候,注意如果有create_at和update_at时,save会自动维护字段,如果想关闭使用:
// 关掉自动更新时间
public $timestamps = false;
更新
save()
/**
* 数据更新,用save()
*/
public function userUpdateSave()
{
$user = Site::find(2);
$user->email = '90000100@qq.com';
$user->is_admin = 1;
$user->save();
}
update()
/**
* 数据更新,用update()
*/
public function userUpdate()
{
Site::where('is_admin',1)
->where('user_name','zhujunwei')
->update(['phone'=>15926152932]);
}
注意save()
与update()
的区别:
save()
适用于单条数据的字段更新,update()
适用于批量更新。update()
saved 和 updated 的模型事件不会被更新的模型触发。这是因为执行批量更新时,不会有任何模型被检索出来。
删除
delete()
$flight = App\Flight::find(1);
$flight->delete();
destroy()
App\Flight::destroy(1);
App\Flight::destroy([1, 2, 3]);
App\Flight::destroy(1, 2, 3);