[Day28]Laravel Eloquent ORM

首先,让我们创建一个 Eloquent 模型。模型通常位於app目录中,但您可以将它们随意放置在可以根据您的文件自动加载的任何位置。所有 Eloquent 模型都扩展了类。
composer.json
Illuminate\Database\Eloquent\Model

创建模型实例的最简单方法是使用Artisan 命令:make:model
让我们来创建一个Product model
php artisan make:model Product

创建好之後打开

我们没有告诉 Eloquent 为我们的Product模型使用哪个表。按照惯例,除非明确指定另一个名称,否则将使用类的复数名称“snake case”作为表名。因此,在这种情况下,Eloquent 将假设Product模型将记录存储在products表中。您可以通过table在模型上定义属性来指定自定义表:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'my_products';
}

如下范例model有这些属性可以使用

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use HasFactory;

    protected $guarded = []; // 设定成只有product_id栏位不能被更改

    protected $fillable = ['code', 'name', 'price', 'quantity'];  // 只有这些栏位可以被大量新增

    protected $hidden = ['updated_at'];  // 隐藏栏位

    protected $appends = ["current_price"];  // 自制属性

    public function getCurrentPriceAttribute()  // 固定命名规则get...Attribute对应上面自制属性
    {
        return $this->quantity * 10;  // 执行程序 Product::find(1)->current_price,就会执行这段function
    }
}

接着到ProductController.php
修改以下方法,使用ORM的方式做CRUD

<?php

namespace App\Http\Controllers;

use App\Models\Product;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class ProductController extends Controller
{
    public function index()
    {
        return Product::all(); // 回传product table 所有资料
    }

    public function create()
    {
        //
    }

    public function store(Request $request)
    {
        $newdata = $request->all();
        $data = Product::create($newdata); // 新增表单回传
        return response($data);
    }

    public function show($id)
    {
        //
    }

    public function edit($id)
    {
        //
    }

    public function update(Request $request, $id)
    {
        $form = $request->all();
        $items = Product::find($id); // 找到要修改资料
        $items->fill(['quantity' => $form['quantity']]); // 修改
        $items->save(); // 储存
        return response()->json(true); // 成功的话回传true
    }

    public function destroy($id)
    {
        Product::find($id)->delete(); // 找到删除资料删除
        return response()->json(true); // 删除成功回传true
    }
}

都设定好後可以去postman测试看看哦,测试方法跟前一章节一样。


<<:  Day 16 [Python ML、Pandas] 组成群组合排序

>>:  [DAY15]组图(2)

[Day 20] 两段式训练比两段式左转更安全 (迁移学习技巧)

前言 走过了资料分析、演算法选择後, 我们得知了有些可以改善模型的方向: 解决资料不平衡(Done)...

DAY 29:Iterator Pattern,迭代各种不同的物件

什麽是 Iterator Pattern? 将不同资料物件透过一致的方式取得其中的元素 问题情境 s...

[Day 17] 第一主餐 pt.9-战前准备

前一篇我们成功下载了postman并且成功用POST把资料传到server去了 今天我们就要来好好认...

建立第一个RESTful api server(实作篇)-2(Day14)

在上一步我们建立了一个基础的echo的server 紧接着我们就要建立第一个crud的api了 关於...

Azure MLS-Notebooks中开发

<<致歉>> 开了两个免费的Azure帐号,由於没有紧盯着预算,不小心玩性大...