เชื่อม Laravel กับ Mongodb

Natthakarn Pruksapong
Touch Technologies
Published in
5 min readJan 21, 2019

เข้าไปดาวน์โหลดไฟล์ที่ลิงค์ http://pecl.php.net/package/mongodb/1.5.3/windows โหลดอันไฟล์ PHP อันแรก

เมื่อโหลดเสร็จแล้วทำการแตกไฟล์ แล้วทำการ copy ไฟล์ที่ชื่อว่า php_mongodb.dll

จากนั้นเข้าไปที่ไฟล์ php ที่โหลดไว้ ไปที่ folder ที่ชื่อว่า ext

วางไฟล์ที่ copy มา

หาไฟล์ที่ชื่อว่า php.ini หรือเครื่องใครที่ไม่แสดงนามสกุลไฟล์ ชื่อไฟล์จะเป็ยชื่อ php จากนั้นดับเบิ้ลคลิก

เมื่อเข้าไปทีไ่ฟล์แล้วทำการเพิ่ม extension=php_mongodb.dll

จากนั้นเข้า vscode หรือ run ที่ command พิมพ์ว่า composer require jenssegers/mongodb --ignore-platform-reqs

จากนั้นไปที่ config ไฟล์ที่ชื่อว่า app.php เพิ่ม Jenssegers\Mongodb\MongodbServiceProvider::class,

จากนั้นไปที่ .env

//.envMONGO_DB_HOST=192.168.99.100
MONGO_DB_PORT=27017
MONGO_DB_DATABASE=mongocrud
MONGO_DB_USERNAME=
MONGO_DB_PASSWORD=

จากนั้นไปที่ config >>database.php

//database.php'connections' => [......'mongodb' => [
'driver' => 'mongodb',
'host' => env('MONGO_DB_HOST', 'localhost'),
'port' => env('MONGO_DB_PORT', 27017),
'database' => env('MONGO_DB_DATABASE'),
'username' => env('MONGO_DB_USERNAME'),
'password' => env('MONGO_DB_PASSWORD'),
'options' => []
],
],

php artisan make:model Car ทำการสร้างไฟล์โดยใช้ command

จากนั้นไปที่ Car.php

//Car.php<?phpnamespace App;use Illuminate\Database\Eloquent\Model;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class Car extends Eloquent
{
protected $connection = 'mongodb';
protected $collection = 'cars';
protected $fillable = [
'carcompany', 'model','price'
];
}

resources >> views >> carcreate.blade.php

//carcaeate.blade.php<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Laravel MongoDB CRUD Tutorial With Example</title>
<link rel="stylesheet" href="{{asset('css/app.css')}}">
<link href = "https://maxcdn.bootstrapcdn.com/bootstrap/
3.3.6/css/bootstrap.min.css" rel="stylesheet">
<script src = "http://ajax.googleapis.com/ajax/libs/
jquery/1.9.1/jquery.js">
</script>
<script src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/
js/bootstrap.min.js">
</script>
</head>
<body>
<div class="container">
<h2>Laravel MongoDB CRUD Tutorial With Example</h2><br/>
<div class="container">
</div>
<form method="post" action="{{url('add')}}">
@csrf
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<label for="Carcompany">Car Company:</label>
<input type="text" class="form-control" name="carcompany">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<label for="Model">Model:</label>
<input type="text" class="form-control" name="model">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<label for="Price">Price:</label>
<input type="text" class="form-control" name="price">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<button type="submit" class="btn btn-success">Submit</button>
</div>
</div>
</form>
</div>
</body>
</html>

สร้าง Controller เพื่อตรวจสอบเงื่อนไขต่างๆ และ ดึงข้อมูล

ใข้คำสั่งphp artisan make:controller CarController

จากนั้นไปที่ routes>>web.php

//web.phpRoute::get('add','CarController@create');
Route::post('add','CarController@store');
Route::get('car','CarController@index');
Route::get('edit/{id}','CarController@edit');
Route::post('edit/{id}','CarController@update');
Route::delete('{id}','CarController@destroy');
Route::get('info/{id}','CarController@info');

สร้างฟังก์ชัน create ไว้ใน class

//Carcontroller.phppublic function create(){
return view('carcreate');
}
  • insert
//Carcontroller.phppublic function store(Request $request)
{
$car = new Car();
$car->carcompany = $request->get('carcompany');
$car->model = $request->get('model');
$car->price = $request->get('price');
$car->save();
return redirect('car')->with('success', 'Car has been successfully added');
}
  • update

สร้างหน้า View สำหรับแก้ไข

//caredit.blade.php<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Laravel MongoDB CRUD Tutorial With Example</title>
<link rel="stylesheet" href="{{asset('css/app.css')}}">
<link href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js">
</script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js">
</script>
</head>
<body>
<div class="container">
<h2>Edit A Form</h2><br/>
<div class="container"></div>
<form method="post" action="{{action('CarController@update', $id)}}">
@csrf
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<label for="Carcompany">Car Company:</label>
<input type="text" class="form-control" name="carcompany" value="{{$car->carcompany}}">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<label for="Model">Model:</label>
<input type="text" class="form-control" name="model" value="{{$car->model}}">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<label for="Price">Price:</label>
<input type="text" class="form-control" name="price" value="{{$car->price}}">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group col-md-4">
<button type="submit" class="btn btn- success">Update</button>
</div>
</div>
</form>
</div>
</body>
</html>

ส่วนของ Carcontroller.php

//Carcontroller.phppublic function update(Request $request, $id)
{
$car= Car::find($id);
$car->carcompany = $request->get('carcompany');
$car->model = $request->get('model');
$car->price = $request->get('price');
$car->save();
return redirect('car')->with('success', 'Car has been successfully update');
}
  • delete
//Carcontroller.phppublic function destroy($id)
{
$car = Car::find($id);
$car->delete();
return redirect('car')->with('success','Car has been deleted');
}
  • get
//Carcontroller.phppublic function index(Request $request)
{
$cars = Car::where(function ($query) use ($request) {
if($request->has('company')) {
// dd($request->company);
$query->where('carcompany', 'LIKE', '%' . $request->company . '%');
//$query->where('carcompany', $request->company);
}
})->orderBy('price', 'asc')->get();
return view('carindex',['cars'=>$cars]);
}

ภาพรวมของไฟล์ CarController.php

//Carcontroller.php<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Car;
class CarController extends Controller
{
public function create()
{
return view('carcreate');
}
public function store(Request $request)
{
$car = new Car();
$car->carcompany = $request->get('carcompany');
$car->model = $request->get('model');
$car->price = $request->get('price');
$car->save();return redirect('car')->with('success', 'Car has been successfully added');
}
public function index(Request $request)
{
$cars = Car::where(function ($query) use ($request)
{
if($request->has('company')) {
// dd($request->company);
$query->where('carcompany', 'LIKE', '%' . $request->company . '%');
//$query->where('carcompany', $request->company);
}
})->orderBy('price', 'asc')->get();
return view('carindex',['cars'=>$cars]);
}
public function edit($id)
{
$car = Car::find($id);
return view('caredit',compact('car','id'));
}
public function update(Request $request, $id)
{
$car= Car::find($id);
$car->carcompany = $request->get('carcompany');
$car->model = $request->get('model');
$car->price = $request->get('price');
$car->save();
return redirect('car')->with('success', 'Car has been successfully update');
}
public function destroy($id)
{
$car = Car::find($id);
$car->delete();
return redirect('car')->with('success','Car has been deleted');
}
public function info($id)
{
$car = Car::find($id);
return view('info',compact('car','id'));
}
}

เข้าไปตรวจสอบหน้าเว็บ http://192.168.99.100/car

Touch Technologies

“ เราไม่ได้ถูกต้องที่สุด แต่เราแสดงสิ่งที่เราทำ ”

--

--