2014-11-02 65 views
0

你好Stackoverflowers,用Laravel的Eloquent創建條目

我目前正在開發一個Laravel 4.2的網頁。我自己管理好幾個問題,但現在我堅持這一點。我試着爲我的MySQL-表structures創建一個新的數據庫條目。連接問題可以排除。

所有的連接似乎都有效,因爲所有的連接都返回一個200-的HTTP狀態 - 好吧,也許更有經驗的開發人員可以幫助我!命名空間是可以的,所有的類都是可訪問的。非常感謝提前!

問題是:爲什麼控制器不向數據庫中插入任何數據。我是否使用錯誤的控制器功能create或者我是否以錯誤的方式使用它?

Structures模型文件中/app/models/db/Structures.php

namespace Database; 
class Structures extends \Eloquent { 
    protected $table='structures'; 
    protected $protected = array(); 
} 

在/app/controllers/admin/api/StructuresController.php相應控制器(命名空間控制器\聯繫\ API問題可已排除)

public function create($data = null) 
{ 
    Structures::create($data)->save(); 
    return Response::json(array('success' => true)); 
} 

我打電話上面有$http - 服務的控制器在個AngularJS

angular.module('PagesService', []) 
.factory('Structure', function($http) { 
    return { 
     save : function(structureData) { 
      return $http({ 
       method: 'POST', 
       url: 'admin/api/structures', 
       headers: { 'Content-Type' : 'application/x-www-form-urlencoded' }, 
       data: $.param(structureData) 
      }); 
     } 
    } 
}) 

這是相應的控制器到服務

angular.module('PagesController', []) 
.controller('StructureController', function($scope, $http, Structure) { 
    $scope.newStructure = function() { 
     Structure.save({ 
      'title': "Änderbar", 
      'type': "markdown", 
      'page-id': 1, 
      'order': 3, 
      'class': '', 
      'text': "Testtext" 
     }) 
      .success(function(data) { 
       ... 
      }) 
      .error(function(data) { 
       console.log(data); 
      }); 
     return false; 
    } 
}); 

routes.php文件(提取物)

Route::resource('admin/api/structures', 'Controllers\Admin\API\StructuresController'); 
+0

你有什麼問題嗎? – charlietfl 2014-11-02 12:36:45

+0

更新了條目。我不確定有什麼問題。我是否以錯誤的方式使用控制器? – barfoos 2014-11-02 12:41:10

+0

我不認爲這是造成問題,但如果你使用'create()',你不需要調用'save()'它會自動插入數據庫 – lukasgeiter 2014-11-02 12:52:49

回答

0

現在,我發現了幾個問題,導致一個大事件。正如假設的那樣,命名空間,數據庫遷移和$http-服務已正確配置。非常感謝@lukasgeiter。

第一問題,我發現是,在AngularJS$http - 服務電話:

$http({ 
    method: 'POST', 
    url: 'admin/api/structures', 
    headers: { 'Content-Type' : 'application/x-www-form-urlencoded' }, 
    data: $.param(structureData) 
}) 

...調用函數店()StructureController(請參閱我的路線.php提取以上)

問題我發現是我的模型白名單。我填寫了$fillable -array()和我想要修改的所有列。

protected $fillable = ['title', 'page-id', 'type', 'order', 'class', 'src', 'figcaption', 'text', 'data']; 

最後問題我發現了,那create -function可以通過我的PagesController(AngularJS)的Structure.get()作爲PARAM給出填充數據。

Structures::create(
    array(
     'title' => Input::get('title'), 
     'page-id' => Input::get('page-id'), 
     'type' => Input::get('type'), 
     'order' => Input::get('order') 
    ) 
); 

一定要包括在Illuminate\Support\Facades\Input類在像控制器的頂部:

namespace ...; 
use ..., Illuminate\Support\Facades\Input; 

class StructuresController extends \BaseController { 
... 
}