[Day 28] Laravel+MongoDB+Vue CRUD - part 1

前言

接下来两天会在laravel使用mongodb跟Vue实作CRUD,而今天主要是环境的设定。

Mongodb套件安装

在开始前请先安装mongodb套件,主要建立mongodb连线

composer require jenssegers/mongodb ^3.6

安装成功之後,在laravel的config/app.php的providers,新增这行

Jenssegers\Mongodb\MongodbServiceProvider::class,

如是用Windows+XAMPP注意事项

在laravel安装mongodb会显示错误

To enable extensions, verify that they are enabled in your .ini files:
    - C:\xampp\php\php.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

确认XAMPP是32位元或64位元

PECL下载最新PHP for MongoDB的DLL档,选择自己环境的PHP版本&OS版本[Thread Safe (TS)],下载php_mongodb.dll,并将档案放置xampp中。
C:\xampp\php\ext下开启php.ini,新增一行extension=php_mongodb,即可重新composer required jenssegers/mongodb ^3.6

安装mongodb

在开发环境需安装mongodb

安装Robo 3T

Robo 3T是可以检视mongodb的工具,安装完之後,建立connection、database、collection

新增资料

Robo 3Tjson格式建立资料,可以想像成key就是栏位,value是资料,跟资料库的差异是mongodb没有资料表栏位限制,可自行在collection建立多个Key Value

https://ithelp.ithome.com.tw/upload/images/20201012/20108252rFiHoHYHeT.png

设定mongodb连线

laravel使用.env、database设定连线,在model建立mongodbCollection的物件,与mysql设定上有点差异

env设定

// mysql port 3306,mongodb port 27017
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=users
DB_USERNAME=root
DB_PASSWORD=

DB_CONNECTION=mongodb
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=mydb
DB_USERNAME=
DB_PASSWORD=

//database
'connections' => [
	'mysql' => [
		'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'users'),
    'username' => env('DB_USERNAME', 'root'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
           PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
     ]) : [],
	],

  'mongodb' => [
		'driver' => 'mongodb',
		'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', 27017),
    'database' => env('DB_DATABASE', 'mydb'),
    'username' => env('DB_USERNAME', ''),
    'password' => env('DB_PASSWORD', ''),
    'options' => [
			'database' => env('DB_AUTHENTICATION_DATABASE', 'admin'),
    ],
  ],
]

Model设定

//mysql set table name
protected $table = 'users';

//mongodb set collection
protected $collection= 'mydb';

<<:  Day 27 Spark local mode

>>:  Day27 laravel todolist 建立使用者群组

深入浅出 Computed

Vue.js 的自我介绍中,只有说自己接近 MVVM 但不是严格的 MVVM。 我觉得只要会「自动更...

day21 : TIDB on K8S (上)

对大部分使用k8s服务的人来说都会有一个探讨的问题是,到底DB是否适合上k8s,其实我个人是觉得不适...

16.unity介面按钮

今天来做按钮功能 一、创立UI按钮 二、撰写点击事件(方法) 接着搭配脚本,把脚本拉进去 publi...

C# 入门之终止循环

在使用循环的过程中,有可能循环代码会包含很多内容,当某个条件达到时,我们可以判断不需要继续运行循环了...

[Day 9] 使用 Config4k 以 Typesafe 及 Validatable 的方式读取 Ktor 设定档

Web 框架提供 API 让开发者读取设定档是基本的必备功能,以 Spring 框架为例,从最早只支...