Laravel初识(三) - 模型

1 artisan命令

  1. 新建模型
// 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 概念和了解

  1. 概念

LaravelEloquent ORM 提供了一个漂亮、简洁的 ActiveRecord
实现来和数据库交互。每个数据库表都有一个对应的「模型」用来与该表交互。你可以通过模型查询数据表中的数据,以及在数据表中插入新记录。

  1. 在模型类中还可以添加一些可选的属性:
codeexplain
protected $primaryKey用来设置主键的名称,默认值为id
protected $table用来设置表名
public $timestamps是否自动维护时间戳,默认为 true。模型会自动维护表中的 created_atupdated_at字段
protected $fillable表示允许某些字段被添加或修改,格式为一维数组
protected $guarded表示禁止某些字段被添加或修改,与 $fillable二选一
  1. 在控制器中使用模型
  • 引入模型的命名空间
  • 静态调用模型
  • 实例化模型类
use App\Models\Member;

方式1:静态调用
Member::get();

方式2:实例化模型
$member = new Member();
$member->get();

4.2 Model层

  1. 时间戳

默认情况下,Eloquent 期望 created_at 和 updated_at 已经存在于数据表中。如果你不让 Laravel
自动管理这些字段,就在模型类中设置 $timestamps 属性为 false

public $timestamps=false;
  1. 以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;
}
  1. 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. 获取全部数据
// 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
  1. 获取第一条数据
// {{$dataList->url}} 打印
   $dataList = $website->first();
  1. 获取第二条数据(如 id = 2)
//  {{$dataList->title}}
   $dataList = $website->find(2);
  1. 限制条件
// 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();
  1. 检索还可以使用sql函数,如count(),max()之类。
// 获取数量
$website->where('title','=','CSDN')->count();
// max 获取最大值
$website->where('title','=','CSDN')->max('id');
4.3.2 插入和更新模型
  1. 插入数据 用 save()方法
$website = new Website();
$website->title = "博客园";
$website->url = "https://www.cnblogs.com/";
$website->save(); // save success return 1 
  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 删除模型
  1. 通过查询删除模型
// delete success return 1 
$website->where('id','=','5')->delete();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值