📜  将对象转换为数组 laravel - PHP (1)

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

将对象转换为数组 Laravel - PHP

在 Laravel 中,我们通常会使用 Eloquent ORM(对象关系映射)来访问数据库。但是有时候我们需要将 Eloquent 对象转换为数组,以便于传递到视图层或者 API 接口中。

在 PHP 中,我们可以使用 toArray() 方法将对象转换为数组。在 Laravel 中,Eloquent 对象也拥有同名的 toArray() 方法。

使用 toArray() 方法转换对象为数组

以下是一个示例 Eloquent 模型:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $fillable = [
        'name',
        'email',
        'password',
    ];
}

我们可以通过以下方式获取一个实例化的用户对象:

$user = App\Models\User::find(1);

然后使用 toArray() 方法将该对象转换为数组:

$array = $user->toArray();

现在 $array 变量就是该用户对象的数组表示。

保留关联关系的数组表示

有时候我们需要将一个实例化的 Eloquent 模型对象转换为保留关联关系的数组表示。

例如下面的 User 模型存在一个 hasMany 的关联关系(即一个用户有多个订单):

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $fillable = [
        'name',
        'email',
        'password',
    ];

    public function orders()
    {
        return $this->hasMany(Order::class);
    }
}

我们可以通过以下方式获取一个实例化的用户对象和它的所有订单:

$user = App\Models\User::with('orders')->find(1);

然后使用 toArray() 方法将模型和其关联关系转换为数组:

$array = $user->load('orders')->toArray();

现在 $array 变量就是该用户对象和它的所有订单的数组表示了。

注意事项
  • 当模型对象转换为数组时,其隐私属性(如密码)会被自动屏蔽。
  • 如果您需要在数组中保留模型对象的可见属性,请在模型中添加 $visible 属性。
  • 如果您需要在数组中删除模型对象的可见属性之外的属性,请在模型中添加 $hidden 属性。

以上是在 Laravel 中将对象转换为数组的一些示例和注意事项。在实际开发中,我们需要根据具体需求灵活使用 toArray() 方法。