laravel控制器和模型的创建和使用-----2019-11-01
1、分别使用手动方式和artisan命令行方式创建控制器。
在laravel框架中控制器一般放在目录:app\Controllers下面,新建的控制器需要类名和文件名需要保持一致,首字母需要大写。控制器中的类需要继承自app\Controllers\Controller类,然后在写自定义的方法。
最后再Route文件中进行路由设置访问。Route::get('index','index@test')
手动创建控制器:
<?php namespace App\Http\Controllers; class Index extends Controller{ public function test(){ echo "hello world"; } }
使用artisan命令行创建控制器:php artisan make:controller Home
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class Main extends Controller{ // }
2、分别使用手动方式和artisan命令行方式创建模型。
在laravel框架中模型并没确定的放置目录,可以再app目录下新建一个Models目录来存放模型文件,首字母也需要大写。模型类需要继承自:Illuminate\Database\Eloquent\Model类,该类中有
框架已经封装好的方法,eg:数据库的增删改查操作等;继承该类后,自定义的类可以直接调用父类中的方法,可以减少代码量。
使用artisan命令行创建模型:PHP artisan make:model Models\Staff
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Staff extends Model { // }
在使用命令行创建模型的时候需要在模型文件名前面加上目录Models\,否则会直接创建在app目录下面。
模型中直接输出和控制器中的文件输出的路由设置方法不一样。Route::get('/staff','staff@selcet')是直接去Controllers文件夹中寻找staff文件,匹配不到直接报错。
3、在控制器中引用模型,通过模型方法获取数据库中的数据,并输出 。
在控制器中调用模型的时候需要使用use关键字来引入模型。可以通过依赖注入的方式在控制器的类中使用模型中的方法,并且不需要手动将类实例化,框架会自动进行类的实例化。
控制器Home代码:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Movies; class Home extends Controller { public function getInfo(Movies $movies){ echo '<pre>'; // $res = $staff->select(); $res = $movies->select(); print_r($res); } }
模型Movies代码:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Movies extends Model { //将数据库中标的字段和类的属性绑定 protected $table = 'movies'; protected $primaryKey = 'mov_id'; protected $name; protected $image; protected $detail; protected $cate_id; public function select(){ return $this->get()->toArray(); } }
运行结果: