📜  laravel 模型转数组 - PHP (1)

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

Laravel 模型转数组 - PHP

在 Laravel 中,我们经常需要将模型转换为数组以便于在视图中使用。在本文中,我们将介绍 Laravel 中如何将模型转换为数组。

使用 toArray() 方法

Laravel 中的模型对象有一个 toArray() 方法,该方法可将该模型转换为标准的 PHP 数组。

示例代码:

$user = App\Models\User::find(1);
$userArray = $user->toArray();

上面的代码将找到 ID 为 1 的用户并将其转换为数组。数组将包含该用户对象上的所有属性。

隐藏模型属性

如果您只需要模型属性的子集,您可以通过在模型中定义属性 $hidden 来控制应该从 toArray() 中隐藏哪些属性。

示例代码:

class User extends Model
{
    /**
     * 需要被隐藏的属性.
     *
     * @var array
     */
    protected $hidden = ['password'];
}

上面的代码将从 toArray() 中隐藏密码属性。

添加自定义属性

您可以很容易地将自定义属性添加到 toArray() 中。最简单的方法是将它们附加到将要转换的对象上。

示例代码:

$userArray = $user->toArray();
$userArray['full_name'] = $user->first_name . ' ' . $user->last_name;

上面的代码将在 toArray() 数组中添加一个名为 full_name 的自定义属性。

将关联模型转换为数组

如果您想将关联的模型转换为数组,您可以通过在 toArray() 中嵌入另一个 toArray() 调用来实现。

示例代码:

class Post extends Model
{
    /**
     * 获取帖子的作者。
     */
    public function author()
    {
        return $this->belongsTo(User::class);
    }
}

$post = Post::with('author')->first();
$postArray = $post->toArray();
$postArray['author'] = $post->author->toArray();

上面的代码将获取带有关联用户的第一篇文章并转换为数组。然后,它将使用关联用户的 toArray() 方法将该用户转换为数组并添加到 postArray 数组中。

结论

本文介绍了将 Laravel 模型转换为数组的不同方式,并演示了如何控制要返回的属性。希望这些技巧能帮助您优化您的 Laravel 应用程序的视图层。