저는 Laravel 프레임 워크를 사용하여 데이터베이스와 상호 작용하는 것을 능숙하게 사용하고 있습니다.PHP/Laravel/eloquent - 데이터베이스에 동적 행을 삽입하십시오.
컨트롤러에 게시 할 양식이 있습니다. 이 양식에는 사용자가 추가 한 '태그'가 있습니다. 사용자는 원하는만큼 태그를 추가 할 수 있습니다.
내가 태그를 게시 할 다음 내 컨트롤러에서,과 같이, 새로운 테이블 행에 각 태그를 삽입 :
$tag = new Tag;
$tag->user_id = Input::get('user_id');
$tag->tag_name = Input::get('tag_name');
$tag->save();
가 어떻게이 문제를 해결할 것인가? 처음에는 각 태그를 배열에 넣고 POST로 배열을 만든 다음 컨트롤러에서 각 요소를 순환하여 데이터베이스에 삽입한다고 생각했습니다.
See the code here, this was actually a previous stack overflow question
그러나 일부 검색 한 후
주위 난 당신이 배열을 게시 할 수 없습니다 결론에 도달했다.그래서 다른 방법은 각 배열 값을 숨겨진 양식 유형으로 POST하는 것입니다. 문제는 내 컨트롤러에 얼마나 많은 태그 (및 그에 대한 행)를 삽입할지 알려주는 것입니다.
전적으로 감사드립니다.
편집 : 아직 몇 가지 문제
EDIT이있는 것은 : 자바 스크립트의 '난'변수와 어떤 새로운 배열을 게시 할 때 모양을 포함하는 코드를 변경했습니다.
이
는$("#tagsbox")
.append("<div class='displaytag'><i>"+tag+"</i><input type='hidden' name='tags["+i+"]["+user_id+"]' value="+user_id+"><input type='hidden' name='tags["+i+"]["+tag+"]'value="+tag+">")
이는 POST 데이터
컨트롤러 동일한
채로 제출Array
(
[user_id] => 12
[lat] => 50.80589
[lng] => -0.02784
[spot_name] => test spot
[tags] => Array
(
[1] => Array
(
[12] => 12
[tag1] => tag1
)
[2] => Array
(
[12] => 12
[tag2] => tag2
)
[3] => Array
(
[12] => 12
[tag3] => tag3
)
)
[location_notes] => some notes
[comments] => some comments
[_token] => Cfsx56FZiEKcVz76mkcZvuBtVG7JQSmdJUffFMfM
) 후의 모습처럼 사용자가 입력 태그 보이는 생성 무엇
//dynamic tags
$tags = Input::get('tags');
foreach ((array) $tags as $tagData)
{
// validate user_id and tag_name first
$tag = Tag::create(array_only($tagData, ['user_id', 'tag_name']));
}
//create spot
$spot = new Spot;
$spot->user_id = Input::get('user_id');
$spot->latitude = Input::get('lat');
$spot->longitude = Input::get('lng');
$spot->spot_name = Input::get('spot_name');
$spot->location_notes = Input::get('location_notes');
$spot->comments = Input::get('comments');
$spot->save();
return Redirect::route('home')
->with('global', 'Spot successfully tagged. You can edit all your spots on your profile.');
태그가 있어야하는 데이터베이스 행에서 여전히 값을 가져올 수 있습니다. 내가 어디로 잘못 가고 있니?
왜 [POST 배열을 할 수 없습니까?] (0120-13995) –
'Input :: all()'을 그냥 루프합니까? 그게 작동해야합니다 –
@ Alendar 글쎄, 입력 더 많은 데이터와 함께 제공됩니다.예 : 한 명의 사용자와 주석 입력이 있지만 한 개, 세 개, 열 개의 태그가있을 수 있습니다. 나는 모든 작업을 반복하는 방법을 실제로 알 수 없습니다. (진절머리 나는 포맷에 대한 사과) – bjurtown