zoukankan      html  css  js  c++  java
  • Laravel5.1学习笔记23 Eloquent 序列化

    Eloquent: Serialization

    Introduction

    When building JSON APIs, you will often need to convert your models and relationships to arrays or JSON. Eloquent includes convenient methods for making these conversions, as well as controlling which attributes are included in your serializations.

    Basic Usage

    Converting A Model To An Array

    To convert a model and its loaded relationships to an array, you may use the toArraymethod. This method is recursive, so all attributes and all relations (including the relations of relations) will be converted to arrays:

    $user = AppUser::with('roles')->first();
    
    return $user->toArray();
    

    You may also convert collections to arrays:

    $users = AppUser::all();
    
    return $users->toArray();
    
    Converting A Model To JSON

    To convert a model to JSON, you may use the toJson method. Like toArray, the toJsonmethod is recursive, so all attributes and relations will be converted to JSON:

    $user = AppUser::find(1);
    
    return $user->toJson();
    

    Alternatively, you may cast a model or collection to a string, which will automatically call the toJson method:

    $user = AppUser::find(1);
    
    return (string) $user;
    

    Since models and collections are converted to JSON when cast to a string, you can return Eloquent objects directly from your application's routes or controllers:

    Route::get('users', function () {
        return AppUser::all();
    });
    

    Hiding Attributes From JSON

    Sometimes you may wish to limit the attributes, such as passwords, that are included in your model's array or JSON representation. To do so, add a $hidden property definition to your model:

    <?php
    
    namespace App;
    
    use IlluminateDatabaseEloquentModel;
    
    class User extends Model
    {
        /**
         * The attributes that should be hidden for arrays.
         *
         * @var array
         */
        protected $hidden = ['password'];
    }
    

    Note: When hiding relationships, use the relationship's method name, not its dynamic property name.

    Alternatively, you may use the visible property to define a white-list of attributes that should be included in your model's array and JSON representation:

    <?php
    
    namespace App;
    
    use IlluminateDatabaseEloquentModel;
    
    class User extends Model
    {
        /**
         * The attributes that should be visible in arrays.
         *
         * @var array
         */
        protected $visible = ['first_name', 'last_name'];
    }
    

    Appending Values To JSON

    Occasionally, you may need to add array attributes that do not have a corresponding column in your database. To do so, first define an accessor for the value:

    <?php
    
    namespace App;
    
    use IlluminateDatabaseEloquentModel;
    
    class User extends Model
    {
        /**
         * Get the administrator flag for the user.
         *
         * @return bool
         */
        public function getIsAdminAttribute()
        {
            return $this->attributes['admin'] == 'yes';
        }
    }
    

    Once you have created the accessor, add the attribute name to the appends property on the model:

    <?php
    
    namespace App;
    
    use IlluminateDatabaseEloquentModel;
    
    class User extends Model
    {
        /**
         * The accessors to append to the model's array form.
         *
         * @var array
         */
        protected $appends = ['is_admin'];
    }
    

    Once the attribute has been added to the appends list, it will be included in both the model's array and JSON forms. Attributes in the appends array will also respect thevisible and hidden settings configured on the model.

  • 相关阅读:
    全网解析视频接口自行测试
    emlog博客的安装教程
    无需任何软件,简单步骤教你手机投屏到电脑
    关于Windows 10系统重置了但以前的office找不到了问题的解决方法
    java&nbsp;indexOf方法
    JAVA&nbsp;线程&nbsp;yield
    android&nbsp;sqlite&nbsp;增删改[insert、up…
    socket error 错误类型列表
    armeabigcc:error trying to& ex…
    android&nbsp;setBackgroundColor
  • 原文地址:https://www.cnblogs.com/grkin/p/4623746.html
Copyright © 2011-2022 走看看