2016-06-06 5 views
0

데이터베이스 테이블에 배열을 추가해야합니다. HTML에서는 select를 여러 선택 값과 함께 사용하고 있습니다.Laravel 많은 관계 삽입

내 코드 : HTML 등 :

<select name="sel_val[]" multiple> 
           <optgroup label="select_values"> 
            @foreach($val as $v) 
            <option value="{{$v->id}}">{{$v->text}}</option> 
            @endforeach 
           </optgroup> 
          </select> 

모델 관계로 같은 :

public function relationtest(){ 


     return $this->hasMany('App\test',"testid","id"); 
    } 

그리고 컨트롤러 :

protected function create(Request $request){ 
    $last = Home::create([ 
     'somename'=>$request['somename'], 
     'text'=>$request['text'] 
    ]); 


    $last->relationtest()->createMany([ 

      'selectvalue'=>$request->sel_val 
     ]); 


    return Redirect::to('admin/products'); 
} 

내 배열 (인 print_r ($ 요청)) :

[sel_val] => Array ([0] => 1 [1] => 3) 

그리고 짧은 DB

HOME:: 
|id|sometext|text 
|1 |asdgasdg|gsdg 
|2 |asdgdsdg|gsg 

TEST:: 
|id|selectvalue|testid 

//testid == HOME::id 

, 나는 $ 요청 -> sel_val (배열) 데이터베이스에 추가되었습니다해야합니다. "createMany"를 사용해야한다고 생각하지만 어떻게해야할지 모르겠다.

답변

1

단지 같은 것을 사용 단순화하기 위해 : 한 쿼리를 최적화하려면

$values = $request->get('sel_val'); 

foreach ($values as $value) 
{ 
    $last->relationtest()->create(['selectvalue' => $value]); 
} 

을 확인, 당신은 createMany을 사용할 수 있습니다 방법

$values = $request->get('sel_val'); 
$toCreate = []; 

foreach ($values as $value) 
{ 
    $toCreate[] = ['selectvalue' => $value]; 
} 

$last->relationtest()->createMany($toCreate); 
+0

당신이에 더 말해 줄 수 추가 된 데이터를 편집 하시겠습니까? – bradley546994

+0

기본적으로 관계를 웅변이나 쿼리 빌더 객체와 동일하게 취급하십시오. 대부분의 메소드는 업데이트, 삽입, 작성, 삭제 등의 작업을 동일하게 수행합니다. https://laravel.com/docs/master/eloquent-relationships#inserting-related-models https://laravel.com/docs/master/queries https://laravel.com/docs/master/eloquent –