顯示具有 laravel 標籤的文章。 顯示所有文章
顯示具有 laravel 標籤的文章。 顯示所有文章

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,將資料寫入
//
$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

$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變數
@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);



參考網頁:

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兩個使用者
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已毋需修改。
參考文件: