📅  最后修改于: 2023-12-03 14:43:48.880000             🧑  作者: Mango
Laravel是一个流行的PHP框架,它提供了许多面向对象的工具和技术,其中一个是模型。
Laravel模型是与数据库交互的核心工具。它们使得访问和处理数据变得更加容易和直观。以下是关于Laravel模型的详细介绍。
Laravel通过使用Artisan命令行工具提供模型生成器。例如,要创建一个名为User
的模型,可以运行以下命令:
php artisan make:model User
生成器将会创建一个PHP类,它扩展了Laravel的内置模型类。该类专门用于与表中的数据进行交互(例如数据库表)。
现在可以在应用程序中查看新创建的模型文件app/User.php
以及可以在启用之前要编辑的内容。
默认情况下,Laravel模型使用跟模型名相同的复数字符来表示模型连接的数据表。例如,User
模型通过默认连接到users
表。
但是,您可以自定义要连接的表名称,如果需要的话。您可以通过模型类中的$table
属性来完成下面的操作:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $table = 'my_users_table';
}
此代码示例将User模型绑定到名为“my_users_table”的连接。
默认情况下,Laravel期望使用id
作为元素的主键。如果需要,还可以自定义主键。同样,在User
模型中,定义一个名为“uid”的自定义主键:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $primaryKey = 'uid';
}
Laravel模型提供了一个便利,它在模型的默认插入或更新时间保存到数据库。默认情况下,Laravel期望操作表有一个名为created_at
和updated_at
的时间戳列。
这添加了一个附加的工作量,以便更新当前时间戳。 在大多数情况下,这种附加的工作量是有价值的。只要数据库包含此类型的列即可。Laravel会自动与之对应。
class User extends Model
{
public $timestamps = true;
}
如果需要与不同的时间戳字段进行操作,则可以通过重载受保护的$createTime
和$updateTime
进行指定。例如:
class Flight extends Model
{
const CREATED_AT = 'creation_date';
const UPDATED_AT = 'last_update';
}
Laravel模型提供许多属性访问方法,使得访问和处理数据库数据更加容易和直观。比如,使用属性来访问数据库模型的名字,像这样:
class User extends Model
{
public function getEmailAttribute($value)
{
return strtolower($value);
}
}
$user = App\User::find(1);
echo $user->email;
Laravel模型有一个重要强大的方面是内置的关系(例如 1:1, 1:n, n:n)。模型关系使得访问嵌套数据变得更加容易。
例如,用户可以拥有许多帖子。在这种情况下,User模型应该定义一个方法来访问它的Post模型:
class User extends Model
{
public function posts()
{
return $this->hasMany('App\Post');
}
}
然后在控制器中,只需要使用Eloquent去调用该函数即可:
$posts = App\User::find(1)->posts;
foreach ($posts as $post) {
//
}
Laravel模型提供一种灵活的查询语法,使得搜索数据和执行类似SQL的查询变得更加容易和直观。
例如,如果想统计所有活动用户的总数,可以使用以下代码:
$count = User::where('active', true)->count();
此查询仅返回符合搜索条件的活动用户数量。
随着这些提示和技巧的加强,Laravel模型变得更加显著。它们可以帮助您轻松而可读的操作、查询数据并创建复杂的关系。在使用Laravel开发应用程序时,使用模型可以改善和使您的编码更高效、清晰和可维护。