2016-11-10 9 views
1

私はリクエストでJsonオブジェクトを取得します。 目的地モデルに合っているかどうかをチェックするために、このオブジェクトを明確に解析します。Laravel、どのように新しいEloquentモデルにオブジェクトをキャストしますか?

プロパティでプロパティを割り当てるのではなく、着信オブジェクトをモデルに簡単に埋め込む方法はありますか?

+0

私は誰もが何か面白いものを追加しているので、「ジ・アンサー」として受け入れるかについて困惑してるすべての答えが好きです。 :) – koalaok

+0

誰かが "答え"にすべてを集計するのを待たなければならないと思う;)またはあなた自身でそれを書いてください! – Paul

答えて

1

このオブジェクトを配列に変換し、fill($attributes)メソッドを使用する必要があります。

メソッド名には、指定された値でオブジェクトが埋められます。データベースには保存されませんので、その後はsave()メソッドを起動する必要があります。
または、1つの方法で塗りつぶしたい場合はcreate($attributes)があり、fill($attributes)save()がフードの下にあります。

1

ちょうどあなたのオブジェクトが

$model = new Model((array) $object); 

モデルコンストラクタの引数として配列にキャスト渡す内部的にはこれはfill()メソッドを使用していますので、あなたは最初$fillableプロパティに入ってくるの属性を追加したり、最初のモデルを作成し、次にforceFill()を使用する必要があります。

1

あなたはLaravelのMass Assignment機能を使用することができ、

あなたのモデルは、次のようになります。

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class User extends Model 
{ 
    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = ['name', 'email', 'phone']; 
} 

とモデルを移入するプロセスは次のようになります:

// This would be your received json data converted to array 
// use 'json_decode($json, true)' to convert json data to array 
$json_arr = [ 
    'name' => 'User Name', 
    'email' => '[email protected]', 
    'phone' => '9999999999' 
]; 
$user = App\User::create($json_arr); 

・ホープこれは役に立ちます!

1

あなたは、配列の配列を持っている場合は、あなたが指定したモデルのコレクションにキャストするhydrate()メソッドを使用することができます。そして、あなたができる、あなただけの単一のレコードを持っている場合は

$records = json_decode($apiResult, true); 

SomeModel::hydrate($records); 

ちょうどモデルのコンストラクタにその配列を渡す:

$model = new SomeModel($record); 
関連する問題