資料庫設定
使用 make:migration
建立新的 migration:
php artisan make:migration --table=users add_api_token
Read more “Laravel API Token 使用方式”
Leave a comment使用 make:migration
建立新的 migration:
php artisan make:migration --table=users add_api_token
Read more “Laravel API Token 使用方式”
Leave a comment在 PHP 5.3 可以透過 ?:
運算子簡單的判斷並賦值
$foo = $bar ?: $baz;
上面的運算式等同:
$foo = $bar ? $bar : $baz;
但是在沒有宣告變數之前仍然會出現錯誤訊息。而 PHP 7.0 開始支援兩個問號 (??
) 判斷並賦值,而且不用事先使用 isset()
判斷變數是否存在:
$username = $_GET['user'] ?? 'nobody';
上面的運算式等同:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
而且可以串一個以上的判斷:
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
Leave a commentReferences
當我們將 migration file 遷移到資料庫後,日後想要直接修改原先的 migration file 而不是新增一個去做結構變更時,可以透過 migrate:refresh
重新遷移,但是如果前一次遷移包含多個檔案時,這些資料表都會受到影響;若想要修改的資料表不屬於上一個批次(batch),透過 –step 選項去做遷移,影響範圍就會更大。
常見的做法是建立一個臨時目錄,將 migration file 放進去後執行遷移,但是這個做法僅適用於第一次遷移;另一種方式是修改資料表 migrations 的批次號碼,讓指定的 migration file 成為上一個批次。
這些都是臨時性做法,若是有很多批要修改就會很麻煩,所以我就寫了一個小工具,之後用一行指令就可以解決這個問題。
Package Name: MigrateSpecific
Version: 1.2.1
Site: https://github.com/caloskao/migrate-specific
Read more “[Laravel] 使用 MigrateSpecific 遷移指定檔案到資料庫”
Leave a commentPHP 可藉由 json_encode()
與 json_decode()
來編碼與解碼 JSON 格式的資料,在一般情況下不需要特別給予任何參數,但如果將 JSON 格式資料直接儲存的話,預設是儲存一行文,在不靠任何工具的前提下僅以肉眼辨識會顯得有點吃力。
$data = [
'5b8e2e456106f8.12710761' => [
'id' => '5b8e2e456106f8.12710761',
'description' => '',
'options' => [],
'size' => 1243916,
'create_at' => '2018-09-04 15:04:02'
]
];
echo json_encode($data);
輸出如下:
{"5b8e2e456106f8.12710761":{"id":"5b8e2e456106f8.12710761","description":"","options":[],"size":1243916,"create_at":"2018-09-04 15:04:02"}}
如果想要提升 JSON 格式資料的可讀性,只需要將 json_encode()
的第二個參數設為 JSON_PRETTY_PRINT
即可。
echo json_encode($data, JSON_PRETTY_PRINT);
輸出:
{
"5b8e2e456106f8.12710761": {
"id": "5b8e2e456106f8.12710761",
"description": "",
"options": [],
"size": 1243916,
"create_at": "2018-09-04 15:04:02"
}
}
PHP 5.6.6 以上可選擇的參數共有 11 個,詳細說明可見 PHP 官網
PHP 陣列索引預設為由 0 開始遞增的循序數列,同時也支援自行設定索引值。
// 序列式
$sequentialArray = ['A', 'B', 'C'];
/*
Array
(
[0] => A
[1] => B
[2] => C
)
*/
// 關聯式
$associativeArray = ['a' => 'A', 'b' => 'B', 'c' => 'C'];
/*
Array
(
[a] => A
[b] => B
[c] => C
)
*/
判斷兩者的方式為檢查陣列索引是否為一公差為 1 的循序數列。先利用 array_keys() 取得所有陣列索引值後,再利用 range() 產生一個循序整數陣列,比對兩者內容即可判斷:
function is_assoc( array $array ) {
if ( [] === $array ) return false;
return array_keys($array) !== range(0, count($array) - 1);
}
var_dump( is_assoc(['a', 'b', 'c']) ); // false
var_dump( is_assoc(['0' => 'a', '1' => 'b', '2' => 'c']) ); // false
var_dump( is_assoc(['1' => 'a', '0' => 'b', '2' => 'c']) ); // true
var_dump( is_assoc(['a' => 'a', 'b' => 'b', 'c' => 'c']) ); // true
Reference: How to check if PHP array is associative or sequential? – Stack Overflow
Leave a comment