2016-12-12 7 views
1

я есть установить MongoDB на моей WAMP, C: \ wamp64 \ Bin \ MongoDB \ mongodb.3.4 \ Bin, у меня есть добавить MongoDB в пути, а также создавать окна чтобы запустить его, когда это необходимо. меня установить просвет через композитор, и после этого я установить:Lumen - MongoDB - jenssegers/Laravel-MongoDB - Почтальон

  • "Laravel/ой-рамку": "5.3. *",
  • "barryvdh/Laravel-иду-помощник" : "v2.2.1",
  • jenssegers/Laravel-MongoDB: "v3.1.3"
  • "jenssegers/MongoDB-сессия": "v1.1.0"

Окончательный я установил mongodb.dll на моем php php и добавьте расширение = php_mongodb.dll внутри php.ini. И теперь расширение на mongodb активно.

Это мой класс User: enter image description here

Это моя миграция

<?php 

    use Illuminate\Support\Facades\Schema; 
    use Jenssegers\Mongodb\Schema\Blueprint; 
    use Illuminate\Database\Migrations\Migration; 

    class CreateUsersTable extends Migration 
    { 
     /** 
     * The name of the database connection to use. 
     * 
     * @var string 
     */ 
     protected $connection = 'mongodb'; 

     /** 
     * Run the migrations. 
     * 
     * @return void 
     */ 
     public function up() 
     { 
      Schema::connection($this->connection)-> 
      table('Users', function (Blueprint $collection) { 
       $collection->index('id'); 
       $collection->string('name'); 
       $collection->string('surname'); 
       $collection->unique('username'); 
       $collection->string('password',64); 
       $collection->timestamps(); 
      }); 
     } 
    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::connection($this->connection) 
      ->table('Users', function (Blueprint $collection) 
      { 
       $collection->drop(); 
      }); 
    } 
}` 

Это файл .env

APP_ENV=local 
APP_DEBUG=true 
APP_KEY= 
APP_TIMEZONE=UTC 

DB_CONNECTION=mongodb 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=homestead 
DB_USERNAME=homestead 
DB_PASSWORD=secret 

MONGODB_HOST=localhost 
MONGODB_PORT=27017 
MONGODB_USERNAME=joy 
[email protected]@joy 
MONGODB_DATABASE=brasserie 
MONGODB_AUTHDATABASE=admin 

CACHE_DRIVER=file 
SESSION_DRIVER=file 

я есть создать конфигурационный каталог в корневом приложении, и у меня есть файл конфигурации database.php:

<?php 

return [ 

    /* 
    |-------------------------------------------------------------------------- 
    | PDO Fetch Style 
    |-------------------------------------------------------------------------- 
    | 
    | By default, database results will be returned as instances of the PHP 
    | stdClass object; however, you may desire to retrieve records in an 
    | array format for simplicity. Here you can tweak the fetch style. 
    | 
    */ 

    'fetch' => PDO::FETCH_CLASS, 

    /* 
    |-------------------------------------------------------------------------- 
    | Default Database Connection Name 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may specify which of the database connections below you wish 
    | to use as your default connection for all database work. Of course 
    | you may use many connections at once using the Database library. 
    | 
    */ 

    'default' => env('DB_CONNECTION', 'mongodb'), 

    /* 
    |-------------------------------------------------------------------------- 
    | Database Connections 
    |-------------------------------------------------------------------------- 
    | 
    | Here are each of the database connections setup for your application. 
    | Of course, examples of configuring each database platform that is 
    | supported by Laravel is shown below to make development simple. 
    | 
    | 
    | All database work in Laravel is done through the PHP PDO facilities 
    | so make sure you have the driver for your particular database of 
    | choice installed on your machine before you begin development. 
    | 
    */ 

    'connections' => [ 



     'mongodb' => array(
      'driver' => 'mongodb', 
      'host'  => env('MONGODB_HOST', '127.0.0.1'), 
      'port'  => env('MONGODB_PORT', 27017), 
      'username' => env('MONGODB_USERNAME', 'root'), 
      'password' => env('MONGODB_PASSWORD', 'testbrasserie'), 
      'database' => env('MONGODB_DATABASE', 'synthese'), 
      'options' => array(
       'db' => env('MONGODB_AUTHDATABASE', 'admin') //Sets the auth DB 
      )//*/ 
     ), 

    ], 

    /* 
    |-------------------------------------------------------------------------- 
    | Migration Repository Table 
    |-------------------------------------------------------------------------- 
    | 
    | This table keeps track of all the migrations that have already run for 
    | your application. Using this information, we can determine which of 
    | the migrations on disk haven't actually been run in the database. 
    | 
    */ 

    'migrations' => 'migrations', 

    /* 
    |-------------------------------------------------------------------------- 
    | Redis Databases 
    |-------------------------------------------------------------------------- 
    | 
    | Redis is an open source, fast, and advanced key-value store that also 
    | provides a richer set of commands than a typical key-value systems 
    | such as APC or Memcached. Laravel makes it easy to dig right in. 
    | 
    */ 

    'redis' => [ 

     'cluster' => env('REDIS_CLUSTER', false), 

     'default' => [ 
      'host'  => env('REDIS_HOST', '127.0.0.1'), 
      'port'  => env('REDIS_PORT', 6379), 
      'database' => env('REDIS_DATABASE', 0), 
      'password' => env('REDIS_PASSWORD', null), 
     ], 

    ],//*/ 

]; 

Я включил красноречие, фасады и jessenger Поставщик услуг. так что это мой boostrap/app.php:

<?php 

require_once __DIR__.'/../vendor/autoload.php'; 

try { 
    (new Dotenv\Dotenv(__DIR__.'/../'))->load(); 
} catch (Dotenv\Exception\InvalidPathException $e) { 
    // 
} 

/* 
|-------------------------------------------------------------------------- 
| Create The Application 
|-------------------------------------------------------------------------- 
| 
| Here we will load the environment and create the application instance 
| that serves as the central piece of this framework. We'll use this 
| application as an "IoC" container and router for this framework. 
| 
*/ 

$app = new Laravel\Lumen\Application(
    realpath(__DIR__.'/../') 
); 

$app->withFacades(); 

// $app->withEloquent(); 

/* 
|-------------------------------------------------------------------------- 
| Register Container Bindings 
|-------------------------------------------------------------------------- 
| 
| Now we will register a few bindings in the service container. We will 
| register the exception handler and the console kernel. You may add 
| your own bindings here if you like or you can make another file. 
| 
*/ 

$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class, 
    App\Exceptions\Handler::class 
); 

$app->singleton(
    Illuminate\Contracts\Console\Kernel::class, 
    App\Console\Kernel::class 
); 

/* 
|-------------------------------------------------------------------------- 
| Register Middleware 
|-------------------------------------------------------------------------- 
| 
| Next, we will register the middleware with the application. These can 
| be global middleware that run before and after each request into a 
| route or middleware that'll be assigned to some specific routes. 
| 
*/ 

// $app->middleware([ 
// App\Http\Middleware\ExampleMiddleware::class 
// ]); 

// $app->routeMiddleware([ 
//  'auth' => App\Http\Middleware\Authenticate::class, 
// ]); 

/* 
|-------------------------------------------------------------------------- 
| Register Service Providers 
|-------------------------------------------------------------------------- 
| 
| Here we will register all of the application's service providers which 
| are used to bind services into the container. Service providers are 
| totally optional, so you are not required to uncomment this line. 
| 
*/ 

$app->register(App\Providers\AppServiceProvider::class); 
// $app->register(App\Providers\AuthServiceProvider::class); 
// $app->register(App\Providers\EventServiceProvider::class); 


if ($app->environment() !== 'production') { 
    $app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class); 
} 

//class_alias ('Jenssegers\Mongodb\Eloquent\Model', 'Moloquent'); 
$app->register('Jenssegers\Mongodb\MongodbServiceProvider'); 

$app->withEloquent(); 
/* 
|-------------------------------------------------------------------------- 
| Load The Application Routes 
|-------------------------------------------------------------------------- 
| 
| Next we will include the routes file so that they can all be added to 
| the application. This will provide all of the URLs the application 
| can respond to, as well as the controllers that may handle them. 
| 
*/ 



$app->group(['namespace' => 'App\Http\Controllers'], function ($app) { 
    require __DIR__.'/../routes/web.php'; 
}); 

$app->configure('database'); 

return $app; 

Вот мой UsersTableSeeder: enter image description here

У меня есть запуск мастеровые мигрируют: установить затем мастеровой мигрируют и, наконец, мастеровые дб: семена и это, кажется, оК, вот результат в Монго: enter image description here

Тогда я должен создать UserController

<?php 
/** 
* Created by PhpStorm. 
* User: Joy_Admin 
* Date: 09/12/2016 
* Time: 23:23 
*/ 

namespace App\Http\Controllers; 

use App\Http\Controllers\Controller; 
use App\User; 
use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Hash; 
use DB; 


class UserController extends Controller 
{ 


    /** 
    * Pour recupérer tous les utilsateurs de la BD 
    * @return \Illuminate\Http\JsonResponse 
    */ 
    public function index() 
    { 
     $users = User::all(); 
     return response()->json($users); 
    } 

    /** 
    * Pour recupérer tous les utilsateurs de la BD 
    * @return \Illuminate\Http\JsonResponse 
    */ 
    public function test() 
    { 

     return response()->json("it's ok"); 
    } 

    /** 
    * pour enregistrer un nouvel utilisateur dans la base de données 
    * @param Request $request 
    */ 
    public function create(Request $request) 
    { 

     $user = new User(); 

     $user->name = $request->input('name'); 
     $user->surname = $request->input('surname'); 
     $user->username = $request->input('username'); 
     $user->password = Hash::make($request->input('password')); 
     $user->save();//*/ 


     DB::collection('Users')->insert([ 
      'name'  => 'name1', 
      'surname' => 'surname1', 
      'username' => 'username1', 
      'password' => Hash::make('password1') 
     ]); 
     return response()->json($user); 

    } 


    /** 
    * On renvoit l'individu dans la BD 
    * correspondant à l'id spécifié 
    * @param $id 
    * @return \Illuminate\Http\JsonResponse 
    */ 
    public function get($id) 
    { 
     $user = User::find($id); 

     return response()->json($user); 
    } 

    /** 
    * Mettre à jour les informations sur un utilisateur de la BD 
    * @param Request $request 
    * @param $id 
    * @return \Illuminate\Http\JsonResponse 
    */ 
    public function update(Request $request,$id) 
    { 
     $user = User::find($id); 

     $user->name = $request->input('name'); 
     $user->surname = $request->input('surname'); 
     $user->username = $request->input('username'); 
     $user->password = Hash::make($request->input('password')); 

     $user->save(); 

     return response()->json($user); 
    } 

    public function delete($id) 
    { 
     $user = User::find($id); 

     $user->delete(); 

     return response()->json('Success'); 

    } 
} 

И, наконец, обновите свои маршруты/сеть.PHP

<?php 

/* 
|-------------------------------------------------------------------------- 
| Application Routes 
|-------------------------------------------------------------------------- 
| 
| Here is where you can register all of the routes for an application. 
| It is a breeze. Simply tell Lumen the URIs it should respond to 
| and give it the Closure to call when that URI is requested. 
| 
*/ 

use App\Http\Controllers\UserController; 



$app->get('/', function() use ($app) { 
    return $app->version(); 
}); 

$app->get('/api/users','[email protected]'); 
$app->get('/api/users/{id}','[email protected]'); 
$app->post('/api/users','[email protected]'); 
$app->put('/api/users/{id}','[email protected]'); 
$app->delete('/api/users/{id}','[email protected]'); 
$app->get('/api','[email protected]'); 

У меня есть запуск почтальон, так что я могу проверить мое приложение, только /апите работы, все остальные пути дают мне ту же ошибку

  1. for $app->get('/api','UserController@test');
  2. for $app->get('/api/users','UserController@index');
  3. for $app->get('/api/users/{id}','UserController@get');
  4. for $app->delete('/api/users/{id}','UserController@delete');

Может ли кто-нибудь помочь мне исправить проблему?

Openssl и curl активны в моем php php.

ответ

1

меня решить проблему, в моем .env я имел:

CACHE_DRIVER=file 
SESSION_DRIVER=file 

но в моем проекте нет конфигурации для них, поэтому, когда у меня есть изменить его в

CACHE_DRIVER= 
SESSION_DRIVER= 

все работает сейчас.

enter image description here