📜  laravel 创建模型 - PHP (1)

📅  最后修改于: 2023-12-03 15:32:34.528000             🧑  作者: Mango

Laravel 创建模型 - PHP

在 Laravel 中,模型是非常重要的组成部分,它允许我们通过与数据库进行交互在应用程序中发挥重要的作用。

创建模型

要创建模型,可以在命令行中使用 make:model 命令:

php artisan make:model Product

这将在 app 目录下创建名为 Product 的模型类。

模型的命名约定

Laravel 模型的命名约定是使用单数形式来表示表名,所以如果你有一个名为 products 的表,你的模型名称将为 Product

模型的填充

创建模型时,make:model 命令还会生成一个类似于以下代码的基本模型类:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    //
}
模型的关联

Laravel 模型支持很多关系,包括一对一、一对多、多对多和多态关系。我们可以在模型中定义这些关系来方便进行操作。

一对一关系

在 Laravel 中,定义一对一关系的方法是通过在模型中定义 hasOnebelongsTo 方法实现。

class User extends Model
{
    /**
     * Get the phone associated with the user.
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

class Phone extends Model
{
    /**
     * Get the user that owns the phone.
     */
    public function user()
    {
        return $this->belongsTo('App\User');
    }
}
一对多关系

在 Laravel 中,定义一对多关系的方法是通过在模型中定义 hasManybelongsTo 方法实现。

class User extends Model
{
    /**
     * Get the comments for the blog post.
     */
    public function comments()
    {
        return $this->hasMany('App\Comment');
    }
}

class Comment extends Model
{
    /**
     * Get the post that owns the comment.
     */
    public function post()
    {
        return $this->belongsTo('App\User');
    }
}
多对多关系

在 Laravel 中,定义多对多关系的方法是通过在模型中定义 belongsToMany 方法实现。

class User extends Model
{
    /**
     * The roles that belong to the user.
     */
    public function roles()
    {
        return $this->belongsToMany('App\Role');
    }
}

class Role extends Model
{
    /**
     * The users that belong to the role.
     */
    public function users()
    {
        return $this->belongsToMany('App\User');
    }
}
多态关系

在 Laravel 中,定义多态关系的方法是通过在模型中定义 morphTomorphMany 方法实现。

class Comment extends Model
{
    /**
     * Get the parent commentable model (post or video).
     */
    public function commentable()
    {
        return $this->morphTo();
    }
}

class Post extends Model
{
    /**
     * Get all of the post's comments.
     */
    public function comments()
    {
        return $this->morphMany('App\Comment', 'commentable');
    }
}

class Video extends Model
{
    /**
     * Get all of the video's comments.
     */
    public function comments()
    {
        return $this->morphMany('App\Comment', 'commentable');
    }
}
总结

在 Laravel 中创建模型是非常简单的。通过遵守命名约定、填充模型并定义关系,我们可以轻松地在应用程序中使用模型来访问数据库。