我是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(); –
你可以嘗試在哪裏('名稱','LIKE','%$ waypoint%「).....」=「通常不會與字符串發揮良好,除非它完全匹配 –
@HBensiali我嘗試了你的想法並失敗。但是當我在查詢中使用了一個字符串時(例如'$ city = City :: where('name','LIKE',「cityname」) - > firstOrFail();')。查詢得到執行。所以看起來變量不會在查詢中分配值。 – anuh91