📅  最后修改于: 2023-12-03 15:02:37.716000             🧑  作者: Mango
在 Laravel 中,我们经常需要将模型转换为数组以便于在视图中使用。在本文中,我们将介绍 Laravel 中如何将模型转换为数组。
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 应用程序的视图层。