2019年1月3日 星期四
Mailtrap.io這個網站真有趣
他是一個假的Smtp Server
只要用Gmail信箱註冊
就可以申請一個假的信箱
那這樣的網站可以怎麼用呢?
假使當你設計一個網站,而且有用到Email寄信功能時
可能因為還在開發中、或者本身電腦尚未安裝sendmail寄信功能
就可以利用到這樣的Fake SMTP Server幫你寄、收信件
Laravel中的.env預設的Mail主機就是MailTrap
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=16xxxxxxxxxxxxx
MAIL_PASSWORD=05xxxxxxxxxxxxx
舉例來說:
假如啟用了Laravel 5.7的EmailVerify功能
使用者註冊後還需要收Email確認
也就是說主機會寄信給使用者
使用者收信點選連結後帳戶才會啟用
這時候MailTrap就可以派上用場了
但由於我們在.env環境設定檔中輸入的是smtp.mailtrap.io
所以儘管大家keyin的Email的信箱多天馬行空
通通都會送到Mailtrap收件匣中
參考網站:
2018年12月25日 星期二
Laravel的一些小技巧 - DB::table(一)
//利用兩層foreach,將資料寫入
//
來源:stackoverflow - How to insert multiple record in laravel
https://stackoverflow.com/questions/29723865/how-to-insert-multiple-rows-from-a-single-query-using-eloquent-fluent
https://stackoverflow.com/questions/40106855/how-to-insert-multiple-rows-in-laravel-5?rq=1
https://stackoverflow.com/questions/39113682/insert-multiple-records-at-once-with-laravel/39389935
https://stackoverflow.com/questions/1307618/multiple-mysql-insert-statements-in-one-query-php
//
$names = array('a','b','c');$ages = array('1','2','3'); foreach($names as $name) { foreach($ages as $age) { DB::table('users')->insert( array('name' => $name, 'age' => $age) ); } }
來源:stackoverflow - How to insert multiple record in laravel
https://stackoverflow.com/questions/29723865/how-to-insert-multiple-rows-from-a-single-query-using-eloquent-fluent
https://stackoverflow.com/questions/40106855/how-to-insert-multiple-rows-in-laravel-5?rq=1
https://stackoverflow.com/questions/39113682/insert-multiple-records-at-once-with-laravel/39389935
https://stackoverflow.com/questions/1307618/multiple-mysql-insert-statements-in-one-query-php
2018年12月23日 星期日
Laravel的一些技巧 - Eloquent(一)
//使用whereIn取得學校列表,函式先取(資料庫欄位的'id', 再取學校陣列)
//School物件是use App\School這個Model
來源:stackoverflow-How to Make Laravel Eloquent “IN” Query?
//School物件是use App\School這個Model
$schools = School::whereIn('id', $select_school)->get(); //DB::table的寫法//$schools = DB::table('schools')->whereIn('id', $select_school)->get();
來源:stackoverflow-How to Make Laravel Eloquent “IN” Query?
2018年12月22日 星期六
Laravel的一些技巧 - Blade (一)
//foreach取學校,最後一間學校不會出現「、」號
//使用$loop變數
來源:stackoverflow-How to remove comma from last array in Laravel 5?
//使用$loop變數
@foreach( $schools as $school) {{ $loop->first ? '' : '、' }} {{ $school->school_name }} @endforeach
來源:stackoverflow-How to remove comma from last array in Laravel 5?
2017年8月13日 星期日
Lararvel 5.4執行migrate ,發生Specified key was too long error
Larval 5.4的資料庫格式做了些許的改變,預設的資料庫格式建議為utf8mb4 ,這可以讓使用者儲存emojis表情符號。但這樣的變格只適合Laravel 5.4新版本以及5.5.7以上的MySQL資料庫。
假如你的資料庫版本較舊,若執行php artisan make:migrate時,則會出現1071Specified key was too long error錯誤訊息
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table
`users` add unique `users_email_unique`(`email`))
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
解決方法:
在app\Providers\AppServiceProvider.php再boot()方法中加上預設值
Schema::defaultStringLength(191);
參考網頁:
假如你的資料庫版本較舊,若執行php artisan make:migrate時,則會出現1071Specified key was too long error錯誤訊息
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table
`users` add unique `users_email_unique`(`email`))
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
解決方法:
在app\Providers\AppServiceProvider.php再boot()方法中加上預設值
Schema::defaultStringLength(191);
2016年11月19日 星期六
偷偷拷貝夥伴的COMPOSER_HOME目錄
和夥伴在同一台主機下共同練習Laravel
每個人都自己的家目錄
而每個人也需要各在自己的家目錄下
composer global require "laravel/installer"
指令
主要目的是要把laravel的安裝程式下載回來到COMPOSER_HOME
(關於COMPSER_HOME是~/.composer還是~/.config/composer請看這一篇)
但是composer global的執行實在太慢了
偷懶一點的作法是
一、利用root的權限,把別人的COPY回來就好了
##舉例有test1與test2兩個使用者
二、設定laravel指令及XDG環境變數
在最後一行寫入
三、重新開機或直接執行source ~/.profile並執行laravel安裝
重新開機後,切換到自己的網頁目錄
輸入
四、修改bootstrap/cache及storage
每個人都自己的家目錄
而每個人也需要各在自己的家目錄下
composer global require "laravel/installer"
指令
主要目的是要把laravel的安裝程式下載回來到COMPOSER_HOME
(關於COMPSER_HOME是~/.composer還是~/.config/composer請看這一篇)
但是composer global的執行實在太慢了
偷懶一點的作法是
一、利用root的權限,把別人的COPY回來就好了
##舉例有test1與test2兩個使用者
mkdir ~/.composer
sudo cp -R /home/test1/.composer/* /home/test2/.composer/
sudo chown -R test.test /home/test2/.composer二、設定laravel指令及XDG環境變數
sudo vi ~/.profile 或sudo vi ~/.bash_profile
在最後一行寫入
export PATH=$HOME/.config/composer/vendor/bin:$PATH
三、重新開機或直接執行source ~/.profile並執行laravel安裝
重新開機後,切換到自己的網頁目錄
輸入
laravel new blog四、修改bootstrap/cache及storage
sudo chown -R www-data.www-data bootstrap/cache/
sudo chown -R www-data.www-data storage/
[Ubuntu16.04]安裝Laravel,COMPOSER_HOME竟多出了.config資料夾
如上圖
安裝Laravel的官方文件中提到:
執行
composer global require "laravel/installer"安裝程式後,可以在~/.composer/vendor/bin目錄下找到laravel指令,但是今天卻發現此次設定的主機的路徑竟是~/.config/composer/vendor/bin,多出了一個.config的資料夾
仔細查閱相關資料後才發現,原來
假如電腦主機若是採用 freedesktop.org standards標準的作業系統,他會先偵測環境變數中XDG_CONFIG_HOME是否有設定,若沒有設定的話,就會自動幫你加上.config
If your system uses freedesktop.org standards, which it detects by looking for environment variables beginning with XDG_, then Composer uses $XDG_CONFIG_HOME/composer/, falling back to $HOME/.config/composer/ if that isn't set.
若要解決這個困擾(至少操作時跟路徑跟官方文件一致比較不會出錯),可從兩個方向著眼:
1.更改全域的設定,主機內全部使用者受惠
sudo vi /etc/profile
2.更改個別使用者
vi ~/.profile
同樣都是在檔案的最後一行加上
export XDG_CONFIG_HOME="$HOME"
這樣一來,當電腦重新啟動後,XDG_CONFIG_HOME環境變數就會先執行了,但假如你先前已經安裝過Composer的話,可能就需要再重新裝一次囉
註:其他XDG環境變數請參閱Environment variables
註:察看目前5.7的laravel Document官方文件,已經將安裝目錄改為~/.config/composer/vendor/bin,所以上面的XDG_CONFIG_HOME已毋需修改。
參考文件:
- Why is COMPOSER_HOME empty?
- Where should the XDG_CONFIG_HOME variable be defined?
- XDG Base Directory support
訂閱:
文章 (Atom)






