Laravel에서 mongoDB의 API를 만들었으므로 막힌 곳을 써 둡니다.
아침은 30분만! 와 난방 붙여 버립니다. 하지만 역시, 통근, 통학하고 걷는 운동을 해 가는 것으로, 도착한 회사등에서 난방 건간이라고 덥지 않습니까? 나는 뜨겁다.
이번에는 웹 앱을 만들 때 온프레의 NoSQL을 요구한 가정으로 모지모지해 보았습니다.
전제
Laravel 시작하고 싶다면이 기사 추천입니다.
htps : // 이 m/사의 1202/이고 ms/6021856b70에 4f8d3dc3d
Laravel을 설치 한 사람들은이 기사를 따라 Laravel 프로젝트를 만드는 데 도움이되는 것이 원활합니다.
환경
절차
1. PHP 용 mongo 모듈 설치
pecl install mongodb
pecl이 없다고 말한 거기 당신
pecl은 PHP가 적당히 최신이라면 부속되어 옵니다!
htps : // 놀라운 l. 코m/쿠에 s치온 s/126448
이 teratail 기사처럼
brew install php
해보자!
2. Laravel 용 mongoDB 드라이버 (쿼리 빌더 등) 설치
composer require jenssegers/mongodb
github은 여기 : htps : // 기주 b. 코 m / 지 센세게 rs / 라라
여기에서이 기사를 참고 인용합니다.
htps : // 코 m / 에 k 제 mp ぁ로 / 있어 ms / 609 77 5869 499b298d
3. config/app.php 편집
'providers' => [
// 略
Jenssegers\Mongodb\MongodbServiceProvider::class,
],
'aliases' => [
// 略
'Moloquent' => Jenssegers\Mongodb\Eloquent\Model::class,
],
4. .env 편집
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
지우다
DB_CONNECTION=mongodb
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=city_db
5. config/database.php 편집
'default' => env('DB_CONNECTION', 'mongodb'),
// 略
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
],
],
6. 모델 만들기
php artisan make:model Models/Project
그런 다음 Models 디렉토리 아래에 Project.php가 있습니다.
Project.php는 다음과 같이 편집합니다.
Models/Project.php<?php
namespace App\Models;
class Project extends \Moloquent
{
protected $collection = 'project';
}
$collection은 mongoDB의 컬렉션을 의미합니다. mongoDB는 문서형 데이터베이스이므로, RDB(관계형 데이터베이스 like MySQL, PostgreSQL)와 같이 테이블이 되지 않습니다. 여기서는 언급하지 않지만 관심이 있다면 알아보십시오. mongoDB 자체는 하지 않고도 NoSQL이라는 개념은 앞으로도 뿌리 내려갈 것이라고 생각합니다.
7.routes/api.php 편집
routes/api.phpRoute::group(['middleware' => ['api']], function(){
Route::resource('projects', 'Api\ProjectController');
Route::get('all', 'Api\ProjectController@all');
Route::get('find/{id}', 'Api\ProjectController@find');
Route::get('where/{name}', 'Api\ProjectController@where');
});
ProjectController는 이 후에 만듭니다.
8. 컨트롤러 작성
php artisan make:controller Api/ProjectController
9. ProjectController.php 편집
이것도 기사로부터의 참고입니다.
app/Http/Controllers/Api/CityController.php<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Project;
class ProjectController extends Controller
{
public function index()
{
$projects = Project::orderBy('_id', 'desc')->get();
return $projects;
}
public function all()
{
$projects = Project::all();
return $projects;
}
public function find($id)
{
$projects = Project::find($id);
return $projects;
}
public function where($name)
{
$projects = Project::where('name','=',$name)->get();
return $projects;
}
}
10. API 동작 확인
php artisan serve --host 0.0.0.0
에서 서버를 시작하고 다른 쉘에서
curl http://127.0.0.1:8001/api/project
어쨌든 등록 한 사람이 돌아옵니다.
URL에 넣으면 get 리퀘스트 날렸을 때의 처리가 되어, 돌아온다
(원래 웹 페이지 열람은 GET 요구? 그래서)
FAQ 자주 있어? (내가 만났다)
Class 'MongoDB\Driver\Manager' not found
8의 명령으로 컨트롤러를 만들려고하면,
Class 'MongoDB\Driver\Manager' not found
했다.
아마 artisan 현금 문제. github 확인해도 Driver/Manager는 없다.
덧붙여서/etc/php.ini의 편집으로 extension 기술하지 않아도 아마 이 방법이라면 자동 기술해 준다고 생각합니다. 제 경우에는
これはやってはダメ。おそらく非推奨の古いmongoDBのドライバーが来ると思います。
pecl install mongo
Answer
설명한 단계를 밟아도 캐시를 지우면 해결 될 것입니다.
php artisan cache:clear
MongoDB\Driver\Exception\AuthenticationException Authentication failed
이것은 DB를 사용한다면 사용자 이름과 암호가 필요하다고 말하고 mongoDB로 사용자를 만들고 database.php에
'username' => env('MONGO_USERNAME', ''),
'password' => env('MONGO_PASSWORD', ''),
.env에 변수를 추가하면 오류가 발생합니다.
어디까지나 이 기사를 따라 하면 됩니다. 본래 제대로 유저 auth 는 확실히 해야 한다고 생각합니다 아마
해결책은 github issue에서 찾아냈습니다
htps : // 기주 b. 코 m / 지 센세게 rs / ぁらゔぇ l-몽고 db / 이스에 s / 766
Reference
이 문제에 관하여(Laravel에서 mongoDB의 API를 만들었으므로 막힌 곳을 써 둡니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/YaCpotato/items/69337d07bb7b8a658866
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pecl install mongodb
brew install php
composer require jenssegers/mongodb
'providers' => [
// 略
Jenssegers\Mongodb\MongodbServiceProvider::class,
],
'aliases' => [
// 略
'Moloquent' => Jenssegers\Mongodb\Eloquent\Model::class,
],
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
DB_CONNECTION=mongodb
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=city_db
'default' => env('DB_CONNECTION', 'mongodb'),
// 略
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
],
],
php artisan make:model Models/Project
<?php
namespace App\Models;
class Project extends \Moloquent
{
protected $collection = 'project';
}
Route::group(['middleware' => ['api']], function(){
Route::resource('projects', 'Api\ProjectController');
Route::get('all', 'Api\ProjectController@all');
Route::get('find/{id}', 'Api\ProjectController@find');
Route::get('where/{name}', 'Api\ProjectController@where');
});
php artisan make:controller Api/ProjectController
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Project;
class ProjectController extends Controller
{
public function index()
{
$projects = Project::orderBy('_id', 'desc')->get();
return $projects;
}
public function all()
{
$projects = Project::all();
return $projects;
}
public function find($id)
{
$projects = Project::find($id);
return $projects;
}
public function where($name)
{
$projects = Project::where('name','=',$name)->get();
return $projects;
}
}
php artisan serve --host 0.0.0.0
curl http://127.0.0.1:8001/api/project
Class 'MongoDB\Driver\Manager' not found
これはやってはダメ。おそらく非推奨の古いmongoDBのドライバーが来ると思います。
pecl install mongo
php artisan cache:clear
'username' => env('MONGO_USERNAME', ''),
'password' => env('MONGO_PASSWORD', ''),
Reference
이 문제에 관하여(Laravel에서 mongoDB의 API를 만들었으므로 막힌 곳을 써 둡니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/YaCpotato/items/69337d07bb7b8a658866텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)