2014-09-22 3 views
1

Laravel Framework에서 사용자 입력을 기반으로 새로운 mysql 테이블을 만들려고합니다.사용자 입력을 기반으로 Laravel에서 새 테이블을 만드시겠습니까?

사용자가 컨트롤러에서 처리 된 양식을 제출하면 양식 데이터가 저장되고 나중에 데이터를 받기 위해 사용자 입력을 기반으로 NEW 테이블이 만들어집니다.

사용자 입력 : laravel 테이블에서

는 사용자의 입력에 테이블 이름과 열 이름을 내놓고 제외하고, 스키마 ::

Schema::create('newtablename', function($table){ 
    $table->increments('id')->unique(); //primary key 
    $table->string('columnname'); 
    etc. 
}); 

는 기본적으로 나는이 작업을 수행 할 수) (작성하여 만들 수 있습니다 이 같은 다차원 배열은 다음과 같습니다

$newtableschema = array(
      'tablename' => 'tablename', 
      'colnames' => array('One', 'Two', 'Three', 'Four'); 
     ); 

    Schema::create($newtableschema['tablename'], function($table){ 
     $table->increments('id')->unique(); //primary key   

     foreach($newtableschema['colnames'] as $col){ 
      $table->text($col); 
     } 
     etc. 
    }); 

내가 오류가 변수가 정의되지 않는 것입니다. 스키마 :: create 메서드에 사용자 입력을 제공하는 방법을 모르겠습니다.

Google에서 지난 3 시간 동안 검색하는 동안 이와 같은 방식으로 표를 만드는 방법이나 설명서와 다른 방법을 찾을 수 없습니다. 웅변적인 문법으로 인해 때로는 혼란 스러울 때가 있습니다.

아이디어가 있으십니까? 아니면 거기에 대체 순수 PHP/sql이 수행하는 것입니다?

많은 감사

편집 : 내 사과, 내 예제 코드에 오타 이전했다. 내 문제는 내가 원하는 변수를 스키마 :: 생성()에 전달하는 방법을 모르겠다.

+0

당신이 얻는 오류는 무엇입니까? '$ newtableschema [ 'array']'란 무엇입니까? 'array'는 필드의 이름인가요? –

+0

또한'$ table-> text ('$ colname');은 작동하지 않으므로'$ table-> text ($ colname); '로 변경하십시오. –

+0

사과드립니다. 코드를 설명 할 때 오타를 만들었습니다. 원래 게시물을 더 명확하게 수정했습니다. 사용자가 multidiminsional 배열을 제공하지만 laravel의 create table 메서드에 전달하는 방법을 알 수 없습니다. –

답변

4

당신은 할 수있다 use($newtableschema)을 사용하여 변수를 closure에 전달하십시오.

Schema::create($newtableschema['tablename'], function($table) use($newtableschema) { 

    // So now you can access the $newtableschema variable here 
    // Rest of your code... 
}); 
+2

우수! 나는 너를 충분히 고마워 할 수 없다. 내 문제를 해결한다. 나는 지금 묻기조차도 어리 석다. –

1

우선 ... '$ colname'은 "$ colname"과 같지 않아야한다. 어포 스트로피가없는 $ colname 만 있으면됩니다.

그게 효과가 있을지 모르겠지만 ... 내 길을 시도해 볼 수 있습니다.

$table->text('$colname'); $table->text($colname); 
0

당신이 따옴표의 PHP에 $ 변수를 넣어 경우는 성경에 기록 된대로 문자열이 표시되도록 일반 텍스트 생각합니다. 이 코드를 보라 : 이것에 대한

$colname = 'something'; 

echo '$colname'.'<br />'; 
echo "$colname".'<br />'; 
echo "{$colname}".'<br />'; 
echo $colname.'<br />'; 

출력은 다음과 같습니다

$colname 
something 
something 
something 

그래서 그것은 분명히 관련 설득력이 아니다.

당신은 사용 : 당신이 변수로 사용하려는 경우

$table->text('$colname'); 

그래서 당신이 이름을 정확한 $colname으로 텍스트 파일을 만들려고하면해야이 경우 간단한 사용 :

$table->text($colname); 
+0

그건 내가 말한거야. – ied3vil

관련 문제