2016-07-08 7 views
0

データを保存する1つの関数内に2つのテーブルがあります。 1つはUsersテーブルで、2つ目はClinicテーブルです。Laravel質量割り当てフィールドを保存しない

私のユーザーの表には、現在正常に動作しているが、それは「ベストプラクティス」だ場合、私はわからないよ:

$user = User::create([ 
    'name' => Str::title($request->get('name')), 
    'email' => $request->get('email'), 
    'password' => bcrypt($request->get('password')) 
]) 

    ->clinic()->create($request->only([ 
     'name' => Str::title('clinic_name'), 
     'telephone', 
     'address_1', 
     'address_2', 
     'city', 
     'postcode' 
    ])); 

私の問題は、Clinicテーブルの「名前」列で発生します。それはちょうどそれが私のClinic列内の$充填可能な配列でだにもかかわらず、それを保存しない:

protected $fillable = ['user_id', 'name', 'telephone'', 'address_1', 
         'address_2', 'city', 'postcode']; 
私は内「のuser_id」を保存したいと私は、一緒に「チェーン」にする方法を試みた

Clinicテーブルが関連しているためです。

ご協力いただきありがとうございます。あなたは$request->only()呼び出しでnameキーをオーバーライドしている

答えて

0

$user = User::create([ 
    'name' => Str::title($request->get('name')), 
    'email' => $request->get('email'), 
    'password' => bcrypt($request->get('password')) 
])->clinic()->create($request->only([ 
    'name' => Str::title('clinic_name'), // This is overriding your 'name' field. 
    'telephone', 
    'address_1', 
    'address_2', 
    'city', 
    'postcode' 
])); 

あなたが要求clinic_nameStr::title()を実行したい場合は、あなたがそうのような属性を手動で割り当てる必要があります:

$user = User::create([ 
    'name'  => Str::title($request->get('name')), 
    'email' => $request->get('email'), 
    'password' => bcrypt($request->get('password')) 
])->clinic()->create([ 
    'name'  => Str::title($request->get('clinic_name')), 
    'telephone' => $request->get('telephone'), 
    'address_1' => $request->get('address_1'), 
    'address_2' => $request->get('address_2'), 
    'city'  => $request->get('city'), 
    'postcode' => $request->get('postcode'), 
]); 

メモ:ちょうどヒントとして、次のようなプロパティとしてリクエスト入力を取得することもできます:

->create([ 
    'name' => $request->name // Performs $request->get('name'). 
]) 
+0

ありがとうございました!それは完全に動作します。 – Ben

0

あなたはcreate()を使用した場合、それは'name'として単一キーでなければなりません'name' => Str::title('clinic_name')を持つことはできません。

あなたは、ユーザを作成する前に、次を使用することができます。

$request->replace('name' => Str::title('clinic_name')); 
関連する問題