📜  laravel 模型其中 - PHP (1)

📅  最后修改于: 2023-12-03 14:43:48.880000             🧑  作者: Mango

Laravel模型详解 - PHP

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_atupdated_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开发应用程序时,使用模型可以改善和使您的编码更高效、清晰和可维护。