📅  最后修改于: 2023-12-03 15:32:34.528000             🧑  作者: Mango
在 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 中,定义一对一关系的方法是通过在模型中定义 hasOne
和 belongsTo
方法实现。
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 中,定义一对多关系的方法是通过在模型中定义 hasMany
和 belongsTo
方法实现。
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 中,定义多态关系的方法是通过在模型中定义 morphTo
和 morphMany
方法实现。
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 中创建模型是非常简单的。通过遵守命名约定、填充模型并定义关系,我们可以轻松地在应用程序中使用模型来访问数据库。