iT邦幫忙

2025 iThome 鐵人賽

DAY 2
0
Modern Web

Laravel 是甚麼系列 第 2

認識資料型別

  • 分享至 

  • xImage
  •  

居然有人追蹤~
感謝/images/emoticon/emoticon24.gif
但是為了怕忘記按送出
會先打一個草稿
然後再持續優化喔~
/images/emoticon/emoticon08.gif
Laravel 支援在模型的 $casts 屬性中指定多種資料型別進行轉換,常見支援的型別包括:

  • 基本型別:integerrealfloatdoublestringboolean
  • 複合物件類型:objectarray(JSON 反序列化為陣列)、collection(轉成 Laravel Collection 物件)
  • 日期時間類型:datedatetimeimmutable_dateimmutable_datetimetimestamp
  • 特殊型別:
    • decimal:(可指定小數位數)
    • encrypted 及其變體(加密存取)
    • hashed(如密碼雜湊)
    • Enum 類型(轉成 PHP Enum)
    • 以及 Laravel 內建的自訂型別轉換類,如 AsArrayObject::classAsCollection::classAsStringable::class

這些轉換可以自動在存取模型屬性時處理類型轉換,像是從 JSON 字串到 PHP 陣列或集合物件,或是從整數轉成布林值,非常方便且安全

範例如下:

protected $casts = [
    'is_admin' => 'boolean',           // 整數 0/1 轉布林值
    'options' => 'array',              // JSON 字串轉 PHP 陣列
    'published_at' => 'datetime',      // 字串轉 Carbon 日期物件
    'price' => 'decimal:2',             // 小數點兩位
    'settings' => AsArrayObject::class, // 轉成 ArrayObject 物件
];

總結來說,Laravel 的資料型別轉換涵蓋基本型別、複合型別、日期時間、加密與 Enum 等,可透過 $casts 屬性輕鬆為模型欄位指定


也太文謅謅~
先練習印出來
https://ithelp.ithome.com.tw/upload/images/20250803/20119035p1XwLG3oql.png

<?php
$people="people";
$number=50;
$boolean=false;
$float=4.6;
echo($people);


強迫變整數印出
https://ithelp.ithome.com.tw/upload/images/20250803/20119035LGAC7CMMmG.png

<?php
$people="people";
$number=50;
$boolean=false;
$float=4.6;

$float=(int)$float;
echo($float);


附上是怎樣的資料類型
https://ithelp.ithome.com.tw/upload/images/20250803/20119035LyIeRENFjM.png

測試印出字串,其中6表示people有6個文字數量

https://ithelp.ithome.com.tw/upload/images/20250803/20119035UO7FphYaMQ.png

字串改成數字其中2表示50有2個文字數量
https://ithelp.ithome.com.tw/upload/images/20250803/20119035x1mkiWta9r.png

https://ithelp.ithome.com.tw/upload/images/20250803/20119035eYQ5deqm8d.png
布林要用int才可以印出,false印出0
https://ithelp.ithome.com.tw/upload/images/20250803/20119035jP4a4mf8So.png
布林要用int才可以印出,true印出1

https://ithelp.ithome.com.tw/upload/images/20250803/201190357dmC4dElaS.png

<?php
$people="50";
$number=50;
$boolean=true;
$float=4.6;

$float=(int)$float;
$boolean=(int)$boolean;
var_dump($boolean);


+-*/
https://ithelp.ithome.com.tw/upload/images/20250803/201190354LkXVJdCv1.png


要加入."\r\n"
換行讓+跟-的顯示分開
https://ithelp.ithome.com.tw/upload/images/20250803/20119035alTrtJoi15.png

加入*跟/

https://ithelp.ithome.com.tw/upload/images/20250803/20119035xbJPFKpEVn.png

%表示餘數

<?php
$people="50";
$number=50;
$boolean=true;
$float=4.6;

$float=(int)$float;
$boolean=(int)$boolean;
var_dump($boolean);

$num1=12;
$num2=3;
$ans=$num1+$num2;
echo($ans."\r\n");
$ans=$num1-$num2;
echo($ans."\r\n");
$ans=$num1*$num2;
echo($ans."\r\n");
$ans=$num1/$num2;
echo($ans."\r\n");
$ans=$num1%$num2;
echo($ans."\r\n");



這裡先偷跑一下看看我們的目標的樣子~

  1. https://ithelp.ithome.com.tw/upload/images/20250803/20119035jIJqYpa7iy.png
  2. https://ithelp.ithome.com.tw/upload/images/20250803/20119035kkLaZAqnO0.png
  3. https://ithelp.ithome.com.tw/upload/images/20250803/20119035iSV0PmCu4S.png
  4. https://ithelp.ithome.com.tw/upload/images/20250803/2011903518gU0bO6Ed.png
  5. https://ithelp.ithome.com.tw/upload/images/20250803/20119035qRGTNkkvhX.png

我們明天見
/images/emoticon/emoticon24.gif


上一篇
居然開賽了
下一篇
練習印出
系列文
Laravel 是甚麼30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言