[ Laravel 5.2 ドキュメント ] Eloquent ORM -- シリアル化

WBOY
リリース: 2016-06-20 12:39:57
オリジナル
957 人が閲覧しました

1. はじめに

JSONAPI を構築する場合、多くの場合、モデルと関係を配列または JSON に変換する必要があります。 Eloquent には、これらの変換を実装するための便利なメソッドと、シリアル化にどのプロパティを含めるかを制御するためのメソッドが含まれています。

2. 基本的な使用法

モデルを配列に変換する

モデルとそのロードされた関連付けを配列に変換するには、toArray を使用できます。方法。このメソッドは再帰的であるため、すべての属性とそれに関連付けられたオブジェクト属性 (関連付けられた関連付けを含む) が配列に変換されます:

$user = App\User::with('roles')->first();return $user->toArray();
ログイン後にコピー

コレクションも配列に変換できます:

$users = App\User::all();return $users->toArray();
ログイン後にコピー

モデルを JSON に変換する

モデルを JSON に変換するには、toArray と同様に toJson メソッドを使用できます。すべての属性とそれに関連付けられた属性も JSON に変換されます。

$user = App\User::find(1);return $user->toJson();
ログイン後にコピー
モデルまたはコレクションを文字列に変換することもできます。これにより、自動的に toJson メソッドが呼び出されます。

$user = App\User::find(1);return (string) $user;
ログイン後にコピー
モデルとコレクションは文字列に変換されるときに JSON に変換されるため、Return することができます。アプリケーションのルートまたはコントローラーから直接 Eloquent オブジェクトを使用する場合:

Route::get('users',function(){    return App\User::all();});
ログイン後にコピー

3. JSON でプロパティを非表示にする

モデル配列または JSON Hide でプロパティを非表示にしたい場合があります。これを実現するには、モデルを定義するときに $hidden 属性を設定します。

<?phpnamespace App;use Illuminate\Database\Eloquent\Model;class User extends Model{    /**     * 在数组中隐藏的属性     *     * @var array     */    protected $hidden = ['password'];}
ログイン後にコピー

注: 関連付けを非表示にしたい場合は、メソッド名を使用します。動的プロパティ名の代わりに、関連付けの。

さらに、visible 属性を使用して、モデル配列および JSON 表示のプロパティのホワイトリストを定義できます。

<?phpnamespace App;use Illuminate\Database\Eloquent\Model;class User extends Model{    /**     * 在数组中显示的属性     *     * @var array     */    protected $visible = ['first_name', 'last_name'];}
ログイン後にコピー

非表示のプロパティを一時的に公開します

特定のモデルの非表示属性を一時的に表示したい場合は、メソッド チェーンの形式でモデル インスタンスを返す makeVisible メソッドを使用できます。

return $user->makeVisible('attribute')->toArray();
ログイン後にコピー

4. 値を JSON に追加します

場合によっては、データベースにないフィールドを配列に追加する必要があります。この関数を実装するには、まずこの値のアクセサーを定義する必要があります。 >

アクセスの定義 フィールドを追加リストに追加した後、フィールド名をモデルの追加属性に追加します。
<?phpnamespace App;use Illuminate\Database\Eloquent\Model;class User extends Model{    /**     * 为用户获取管理员标识     *     * @return bool     */    public function getIsAdminAttribute()    {        return $this->attributes['admin'] == 'yes';    }}
ログイン後にコピー

フィールドが追加リストに追加されたら、これは、モデル配列と JSON に含まれます。appends 配列のフィールドも、 で構成されたモデルの表示設定と非表示設定に従います。
<?phpnamespace App;use Illuminate\Database\Eloquent\Model;class User extends Model{    /**     * 追加到模型数组表单的访问器     *     * @var array     */    protected $appends = ['is_admin'];}
ログイン後にコピー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート