Я новичок в Laravel. Я использую Laravel 5.2, и у меня возникла проблема с введением данных в сводную таблицу, с которой я работал с многими отношениями. Для передачи данных в ядро я использую запрос jQuery ajax post. Это код выглядит следующим образом.Вставка данных в сводную таблицу в Laravel 5.2
$("#btnSave").click(function(){
var path = JSON.stringify(route);
var token = $('input[name="_token"]').val();
$.post("/tour",
{
tourname: $("#name").val(),
startpoint: $("#select_startpoint").val(),
endpoint : $("#select_endpoint").val(),
waypoints : path,
'_token': token
},function(){
alert("Path has been saved");
window.location.href = "/tour";
}); });
Здесь маршрут представляет собой массив JavaScript с набором строк, и я использую Json для передачи значений на сервере. Здесь я использую контроллер ресурсов RESTful для обработки запроса, и его метод хранилища следующий.
public function store(Request $request){
$user = Auth::user();
$tour = new Tour;
$tour->name = $request->tourname;
$tour->user_id = $user->id;
$tour->startpoint = $request->startpoint;
$tour->endpoint = $request->endpoint;
$tour->save();
$json = $request->waypoints;
$waypoints = json_decode($json);
foreach($waypoints as $waypoint){
$city = City::where('name', '=', $waypoint)->firstOrFail();
$tour->cities()->attach($city->id);
} }
Здесь в вставке данных в сводную таблицу, я хочу получить city_id
конкретный город из базы данных первыми, так как у меня только это имя в массиве. Когда я выполняю код, таблица тура обновляется правильно, но сводная таблица (city_tour
) does'nt. Когда я был дальше отлаживать, я заметил, что когда целочисленное значение настраивается пользователем (как пример: $tour->cities()->attach(2);
), код работает нормально. Кажется, что существует проблема при присвоении значения переменной $waypoint
внутри запроса. Но я не могу понять, помощь очень ценится.
если это работает $ this-> cities() -> attach (2); то ваша проблема может быть здесь ----> $ city = City :: where ('name', '=', $ waypoint) -> firstOrFail(); –
Вы можете попробовать, где ('name', 'LIKE', "% $ waypoint%") ..... "=" обычно не играет хорошо со строками, если не соответствует точному –
@HBensiali Я попытался с вашей идеей и не смог , Но когда я использовал только строку в запросе (например, '$ city = City :: where ('name', 'LIKE'," cityname ") -> firstOrFail();'). запрос был выполнен. Таким образом, кажется, что переменные не присваивают значения в запросе. – anuh91