文章目录
1 artisan命令
- 新建模型
// app
php artisan make:model MyTest
// model 目录下建立
php artisan make:model Model/MyTest
2 数据库配置
数据库配置在 .env
文件,如下所示。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel /*表*/
DB_USERNAME=root /*账号*/
DB_PASSWORD= /*密码*/
3 DB方法
直接访问表,不需要新建模型类。
1. page.balde.php
@foreach($dataList as $data)
<tr>
<td> {{$data->No}}</td>
<td> {{$data->WebsiteName}} </td>
<td> <a href="{{ $data->WebsiteUrl }}">链接</a></td>
<tr>
@endforeach
2. Moudle
use Illuminate\Support\Facades\DB;
public function getWebsiteData(){
$dataList = DB::table('website')
->selectRaw("id AS No,title AS WebsiteName, url AS WebsiteUrl")
->orderBy("id")
->limit(5)
->get();
return view('page', ['dataList' => $dataList]);
}
4 Eloquent类
4.1 概念和了解
- 概念
Laravel
的Eloquent ORM
提供了一个漂亮、简洁的ActiveRecord
实现来和数据库交互。每个数据库表都有一个对应的「模型」用来与该表交互。你可以通过模型查询数据表中的数据,以及在数据表中插入新记录。
- 在模型类中还可以添加一些可选的属性:
code | explain |
---|---|
protected $primaryKey | 用来设置主键的名称,默认值为id |
protected $table | 用来设置表名 |
public $timestamps | 是否自动维护时间戳,默认为 true 。模型会自动维护表中的 created_at 和updated_at 字段 |
protected $fillable | 表示允许某些字段被添加或修改,格式为一维数组 |
protected $guarded | 表示禁止某些字段被添加或修改,与 $fillable 二选一 |
- 在控制器中使用模型
- 引入模型的命名空间
- 静态调用模型
- 实例化模型类
use App\Models\Member;
方式1:静态调用
Member::get();
方式2:实例化模型
$member = new Member();
$member->get();
4.2 Model层
- 时间戳
默认情况下,Eloquent 期望 created_at 和 updated_at 已经存在于数据表中。如果你不让 Laravel
自动管理这些字段,就在模型类中设置 $timestamps 属性为 false
public $timestamps=false;
- 以website类作为model举例
//database construction
/* CREATE TABLE IF NOT EXISTS `website`(
`id` INT UNSIGNED AUTO_INCREMENT,
`title` VARCHAR(100) NOT NULL,
`url` VARCHAR(40) NOT NULL,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8; */
class Website extends Model
{
const TABLE_NAME="website";
protected $table = self::TABLE_NAME;
public $timestamps=false;
}
- Controller层
use App\Model\Website;
// 新建Model类
$website = new Website();
// 获取第一个数据并返给View
$dataList = $website->first();
// {{$dataList->url}} blade.php页面打印
return view('db',['dataList'=>$dataList]);
4.3 方法集锦
4.3.1 数据检索
- 获取全部数据
// 1. 返回的是一个对象集合
$dataList = $website::all();
foreach ($dataList as $data) {
echo $data->title . " " . $data->url . "</br>";
}
die();
//.balde.php
@foreach($dataList as $data)
{{$data->id}}
@endforeach
// 2. 如果要返回数组后面加上->toArray()
$dataList = $website::all()->toArray();
// print_r($dataList);
foreach ($dataList as $data) {
echo $data["url"];
}
die();
//.blade.php
@foreach($dataList as $data)
{{$data["url"]}}
@endforeach
- 获取第一条数据
// {{$dataList->url}} 打印
$dataList = $website->first();
- 获取第二条数据(如
id = 2
)
// {{$dataList->title}}
$dataList = $website->find(2);
- 限制条件
// 1. 获取一条数据
// {{$dataList->url}}
$dataList = $website->where('title','=','CSDN')->first();
// 2. 用get获取获得的是对象群
// @foreach($dataList as $data){{$data->url}}@endforeach
$dataList = $website->where('title','=','CSDN')->get();
// 3.上述转换成二位数组的格式
// @foreach($dataList as $data){{$data["title"]}}@endforeach
$dataList = $website->where('title','=','CSDN')->get()->toArray();
- 检索还可以使用sql函数,如
count(),max()
之类。
// 获取数量
$website->where('title','=','CSDN')->count();
// max 获取最大值
$website->where('title','=','CSDN')->max('id');
4.3.2 插入和更新模型
- 插入数据 用
save()
方法
$website = new Website();
$website->title = "博客园";
$website->url = "https://www.cnblogs.com/";
$website->save(); // save success return 1
- 更新
//语法
updete(['key1' => 'value1','key2' => 'value2']);
//举例 - updete success return 1
$website->where('id','=','6')->update(['title' => 'Bootstrap','url' => 'https://www.bootstrap.cn']);
4.3.3 删除模型
- 通过查询删除模型
// delete success return 1
$website->where('id','=','5')->delete();