2014-06-23 68 views
0

https://github.com/jenssegers/laravel-mongodb的文檔沒有詳細描述將數據保存到mongodb。laravel mongodb不保存

我已經安裝了laravel的全新安裝並設置了mongo連接,如文檔中所述,安裝了mongodb本身。

創建的模型

use Jenssegers\Mongodb\Model as Eloquent; 

class Notifications extends Eloquent { 

    protected $connection = 'mongodb'; 
    protected $collection = 'notifications'; 

    public static function foo() 
    { 
     return 'test returning from model'; 
    } 

} 

,並創建一個簡單的途徑來測試

Route::get('notifiction' , function(){ 

    $notifiction = new Notifications(); 

    $arr = array('name' => 'John Doe'); 

    $notifiction->save($arr); 
}); 

但是當我運行本地主機/蒙戈/公/ notifiction我得到哎呦,看起來像出事了 。我不確定還有什麼需要通過laravel將信息保存到mongodb中?

+0

您可以檢查是否有在你的應用程序/存儲/日誌/ laravel.log任何錯誤?另外在你的開發環境中,你可能想要在你的app/config/app.php中更改爲debug = true,這樣你看到的不僅僅是「Whoop,看起來像是出了問題」。 – Unnawut

+0

我的壞似乎,即使我安裝了mongo,我沒有安裝mongodb php庫。笨。 – user2988129

+0

沒問題。確保你添加一個答案,但你的問題。以防萬一有人遇到同樣的問題並且搜索這個問題。 – Unnawut

回答

4

這個錯誤很可能與質量分配有關。這是laravel在將它保存到數據庫之前將每件事都視爲不安全。因此,我們必須將我們試圖保存的字段列入白名單。

我們這樣做的方式是在模型中。假設您正試圖使用​​USER model將數據保存在Users表中。首先打開app/models/user.php,並添加以下行:

class User extends Eloquent { 
protected $fillable = ['name']; 

}

以上,可填充我們列出name,因爲我們想從控制器保存名稱(如果您有任何額外的數據數組中填寫)。現在我們可以保存控制器的數據。

例如:User::create(array('name' => 'John'));將保存名稱在Users collection。請注意,收集的名稱將是模型的名稱,除非另有規定。

[如果這不能解決您的問題,請啓用調試app/config/app.php並設置debug =true。找到錯誤並嘗試搜索。]

1

您不需要像SQL模型那樣執行操作。

你試試這樣

class User extends Moloquent { 
    protected $connection = 'mongodb'; 
    protected $collection = 'collection1'; 
    protected $fillable = ['_id','userName','passwd']; 
} 

模型你可以試試這個插入

DB::connection('mongodb')->collection('collection1') 
    ->insert(array(
      '_id' => 'H12345', 
      'userName' => 'Nithil', 
      'passwd' => 'qwoeuig')); 

使用Moloquent是在使用多DBS更加方便。對於使用Moloquent,您可以通過添加以下的別名數組中app/config/app.php註冊MongoDB的模型別名:

'Moloquent' => 'Jenssegers\Mongodb\Model', 

這將允許您使用已註冊的別名,如:

class MyModel extends Moloquent {} 
0

由於OP已經提到的錯誤是由於

Did not installed the MongoDB PHP Library

除此之外,做在Laravel質量分配領域要麼是"white listed""black listed"

白名單領域(S)添加

// name, age, username and email could be mass assigned
protected $fillable = ['name', 'age', 'username', 'email'];

將該字段添加到黑名單添加

// except _id everything could be mass assigned
protected $guarded = ['_id'];

你的模型文件