2016-07-08 7 views
0

하나의 함수 내에 데이터를 저장하려는 테이블이 2 개 있습니다. 하나는 Users 테이블이고 두 ​​번째 테이블은 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 테이블이 관련되어 있기 때문입니다.

많은 도움에 감사드립니다.

답변

0

당신은 당신의 $request->only() 호출에서 name 키를 오버 라이딩 : 당신이 요청 clinic_name 이상 Str::title()를 실행하려면

$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' 
])); 

것은, 당신과 같이 수동으로 속성을 지정해야합니다 :

$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()를 사용하는 경우
->create([ 
    'name' => $request->name // Performs $request->get('name'). 
]) 
+0

감사합니다! 그것은 완벽하게 작동합니다. – Ben

0

당신은 'name' => Str::title('clinic_name')을 가질 수 없습니다, 그것은 'name' 같은 단일 키해야합니다.

당신은 사용자를 작성하기 전에 다음을 사용할 수 있습니다

$request->replace('name' => Str::title('clinic_name'));