<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Laravel - itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</title>
	<atom:link href="https://www.itoffside.com/tag/laravel/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.itoffside.com</link>
	<description>ข้อมูลข่าวสารและเรื่องราวบนโลกของไอทีที่ ล้ำหน้า พร้อมสาระการเขียนโปรแกรมคอมพิวเตอร์</description>
	<lastBuildDate>Thu, 12 Jan 2023 14:35:58 +0000</lastBuildDate>
	<language>th</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.itoffside.com/wp-content/uploads/2020/04/cropped-favicon-96x96-1-32x32.png</url>
	<title>Laravel - itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</title>
	<link>https://www.itoffside.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Laravel &#8211; EP13 Database กับการใช้งาน Eloquent</title>
		<link>https://www.itoffside.com/laravel-ep13-database-eloquent/</link>
					<comments>https://www.itoffside.com/laravel-ep13-database-eloquent/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Thu, 12 Jan 2023 14:34:19 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Eloquent]]></category>
		<category><![CDATA[Eloquent-database]]></category>
		<category><![CDATA[laravel-Eloquent]]></category>
		<category><![CDATA[laravel-Eloquent-database]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php 8]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[php7]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2909</guid>

					<description><![CDATA[<p>Laravel ใช้ Eloquent ORM เป็นตัวช่วยในการเชื่อมต่อฐานข้อมูล โดย Eloquent จะมีการแปลงข้อมูลในฐานข้อมูลเป็นออบเจกต์ (Object) บนภาษา PHP ซึ่งช่วยให้นักพัฒนาสามารถเขียนโค้ดที่เชื่อมต่อฐานข้อมูลแบบง่ายขึ้น โดยไม่ต้องเขียน SQL เอง เพื่อใช้งาน Eloquent คุณสามารถสร้างคลาสที่สืบทอดจากคลาส Eloquent และปรับปรุ...</p>
<p>The post <a href="https://www.itoffside.com/laravel-ep13-database-eloquent/">Laravel – EP13 Database กับการใช้งาน Eloquent</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>Laravel ใช้ Eloquent ORM</strong> เป็นตัวช่วยในการเชื่อมต่อฐานข้อมูล โดย <span style="text-decoration: underline;"><strong>Eloquent</strong> </span>จะมีการแปลงข้อมูลในฐานข้อมูลเป็นออบเจกต์ (Object) บนภาษา PHP ซึ่งช่วยให้นักพัฒนาสามารถเขียนโค้ดที่เชื่อมต่อฐานข้อมูลแบบง่ายขึ้น โดยไม่ต้องเขียน SQL เอง</p>
<p>เพื่อใช้งาน <span style="text-decoration: underline;">Eloquent</span> คุณสามารถสร้างคลาสที่สืบทอดจากคลาส <span style="text-decoration: underline;">Eloquent</span> และปรับปรุงข้อมูลตามความต้องการ คลาสนี้จะเรียกว่า &#8220;<strong><span style="text-decoration: underline;">Model</span></strong>&#8221; ซึ่งจะเป็นตัวแทนของตารางในฐานข้อมูลนั่นเอง<span id="more-2909"></span></p>
<p>หากต้องการสร้าง Model สำหรับตาราง &#8220;users&#8221; ของฐานข้อมูล สามารถสร้างไฟล์ &#8220;User.php&#8221; ภายในโฟลเดอร์ &#8220;<span style="color: #3366ff;">app/Models</span>&#8221; และสร้างไฟล์ User.php แล้วเขียนคลาสดังนี้</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    //
}</pre><p>หลังจากนั้น ให้ไฟล์ใน Controller สามารถเรียกใช้งาน Eloquent เพื่อดึงข้อมูลจากตาราง &#8220;users&#8221; ของฐานข้อมูลได้ดังนี้</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        $users = User::all();
        return view('users.index', compact('users'));
    }
}</pre><p>จากตัวอย่างข้างต้น สามารถใช้งานฟังก์ชัน all เพื่อดึงข้อมูลทั้งหมดจากตาราง &#8220;users&#8221; และนำข้อมูลทั้งหมดนั้นไปแสดงผลบนหน้าจอผ่านทางเทมเพลท (view) ไฟล์<span style="color: #3366ff;"> resources/views/users/index.blade.php</span></p>
<p>น่าจะเป็นสิ่งที่มีประโยชน์มากสำหรับนักพัฒนาเว็บแอพพลิเคชัน เพราะมันช่วยให้สร้างโค้ดที่ลดข้อผิดพลาดลง โดยไม่ต้องเขียนคำส่ง SQL ของฐานข้อมูลขึ้นมาเอง นอกจากนี้ Eloquent ยังมีการสนับสนุนการใช้งานฟังก์ชันการค้นหาและการเรียงลำดับข้อมูล ทำให้คุณสามารถสร้างโค้ดที่มีประสิทธิภาพสูงขึ้นได้อีกด้วย</p>
<p>นอกจากนี้ Eloquent ยังมีการสนับสนุนการทำงานร่วมกับความสัมพันธ์ของข้อมูลระหว่างตารางต่าง ๆ หรือเรียกว่า Relation ซึ่งช่วยให้สามารถสร้างโค้ดที่สามารถเข้าถึงข้อมูลที่เกี่ยวข้องกันได้ง่ายขึ้น ตัวอย่างเช่น หากตาราง &#8220;users&#8221; มีความสัมพันธ์กับตาราง &#8220;orders&#8221; ซึ่งเป็น 1-N ดังนั้นสามารถสร้างฟังก์ชันที่เรียกว่า &#8220;orders&#8221; ใน Model ของ &#8220;User&#8221; เพื่อเข้าถึงข้อมูลการสั่งซื้อของผู้ใช้นั้นๆ ดังนี้ โดยให้เข้าไปแก้ไข code ที่ไฟล์ <span style="color: #3366ff;">app\Models\User.php</span></p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function orders()
    {
        return $this-&gt;hasMany(Order::class);
    }
}</pre><p>จากตัวอย่างข้างต้น สามารถเรียกใช้งานฟังก์ชัน orders เพื่อเข้าถึงข้อมูลการสั่งซื้อของผู้ใช้นั้นๆ ได้ดังนี้ ใน Controller</p><pre class="crayon-plain-tag">$user = User::find(1);
$orders = $user-&gt;orders;</pre><p>Eloquent ยังมีการสนับสนุนการทำงานร่วมกับความสัมพันธ์ของข้อมูลอื่น ๆ เช่น ความสัมพันธ์ 1-1, N-1 และ N-N เพื่ออธิบายความสัมพันธ์นี้ในรูปแบบของคลาส สามารถใช้คำสั่งต่าง ๆ ของ Eloquent เพื่อสร้างความสัมพันธ์นี้ได้ ตัวอย่างเช่น การสร้างความสัมพันธ์ 1-1 ระหว่าง Model ของ &#8220;User&#8221; กับ Model ของ &#8220;Profile&#8221; คุณ สามารถเขียนโค้ดดังนี้ ที่ไฟล์ <span style="color: #3366ff;">app\Models\User.php</span></p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function profile()
    {
        return $this-&gt;hasOne(Profile::class);
    }
}</pre><p>จากตัวอย่างข้างต้น สามารถเรียกใช้งานฟังก์ชัน profile เพื่อเข้าถึงข้อมูลของโปรไฟล์ของผู้ใช้นั้นๆ ได้ดังนี้ใน <strong>Controller</strong></p><pre class="crayon-plain-tag">$user = User::find(1);
$profile = $user-&gt;profile;</pre><p>Eloquent ยังสามารถช่วยให้คุณสร้างความสัมพันธ์ของข้อมูลแบบ N-N ได้ ด้วยการใช้คำสั่ง belongsToMany แทน ตัวอย่างเช่น การสร้างความสัมพันธ์ N-N ระหว่าง Model ของ &#8220;User&#8221; กับ Model ของ &#8220;Role&#8221; สามารถเขียนโค้ดดังนี้</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function roles()
    {
        return $this-&gt;belongsToMany(Role::class);
    }
}</pre><p>จากตัวอย่างข้างต้น สามารถเรียกใช้งานฟังก์ชัน roles เพื่อเข้าถึงข้อมูลของบทบาทของผู้ใช้นั้นๆ ได้ดังนี้ ใน <strong>Controller</strong></p><pre class="crayon-plain-tag">$user = User::find(1);
$roles = $user-&gt;roles;</pre><p></p><pre class="crayon-plain-tag">$user = User::find(1);
$roles = $user-&gt;roles;</pre><p>นอกจากนี้ ยังสามารถเรียกใช้งานฟังก์ชันต่าง ๆ ของ Eloquent เพื่อจัดการข้อมูลของตารางอื่นๆ ได้อย่าง save, update, delete หรือการเรียกดูข้อมูลแบบกำหนดเงื่อนไขได้ ตัวอย่างเช่น การอัพเดทข้อมูลของผู้ใช้ที่มี ID เท่ากับ 1 สามารถเขียนโค้ดดังนี้</p><pre class="crayon-plain-tag">$user = User::find(1);
$user-&gt;name = 'John';
$user-&gt;save();</pre><p>นอกจากนี้ ยังสามารถเรียกใช้งานคำสั่ง update ของ Eloquent เพื่ออัพเดทข้อมูลทีละหลายฟิลด์พร้อมๆ กันได้ เช่น</p><pre class="crayon-plain-tag">User::where('id', 1)-&gt;update([
    'name' =&gt; 'John',
    'email' =&gt; 'john@example.com',
]);</pre><p>นอกจากนี้ยังสามารถเรียกใช้งานคำสั่ง delete ของ Eloquent เพื่อลบข้อมูลทีละหลายแถวพร้อมๆ กันได้ เช่น</p><pre class="crayon-plain-tag">User::where('id', '&gt;', 1)-&gt;delete();</pre><p>เพื่อที่จะเข้าถึงข้อมูลแบบกำหนดเงื่อนไข สามารถใช้ฟังก์ชัน where ของ Eloquent ซึ่งจะสร้างคำสั่ง WHERE ของ SQL สำหรับการค้นหาข้อมูลได้ ตัวอย่างเช่น การเรียกดูข้อมูลของผู้ใช้ที่มีอีเมลล์ลงทะเบียนเป็น &#8220;john@example.com&#8221; สามารถเขียนโค้ดดังนี้</p><pre class="crayon-plain-tag">$users = User::where('email', 'john@example.com')-&gt;get();</pre><p>สามารถปรับปรุงฟังก์ชัน where เพิ่มเติมโดยฟังก์ชันอื่น ๆ เช่น orWhere หรือ whereIn ซึ่งจะช่วยค้นหาข้อมูลตามเงื่อนไขที่กำหนดเพิ่มเติม ตัวอย่างเช่น การเรียกดูข้อมูลของผู้ใช้ที่มีอีเมลล์ลงทะเบียนเป็น &#8220;john@example.com&#8221; หรือ &#8220;jane@example.com&#8221; สามารถเขียนโค้ดดังนี้</p><pre class="crayon-plain-tag">$users = User::where('email', 'john@example.com')
    -&gt;orWhere('email', 'jane@example.com')
    -&gt;get();</pre><p>นอกจากนี้ ยังสามารถใช้ฟังก์ชัน whereIn เพื่อค้นหาข้อมูลของผู้ใช้ที่มีอีเมลล์ลงทะเบียนอยู่ในรายการที่กำหนด ตัวอย่างเช่น การเรียกดูข้อมูลของผู้ใช้ที่มีอีเมลล์ลงทะเบียนเป็น &#8220;john@example.com&#8221; หรือ &#8220;jane@example.com&#8221; สามารถเขียนโค้ดดังนี้</p><pre class="crayon-plain-tag">$users = User::whereIn('email', ['john@example.com', 'jane@example.com'])-&gt;get();</pre><p>Eloquent ยังมีฟังก์ชันอื่น ๆ ที่สามารถใช้งานเพื่อค้นหาข้อมูลแบบกำหนดเงื่อนไขได้ เช่น whereBetween หรือ whereNotIn สามารถศึกษาเพิ่มเติมได้จากเอกสารของ <strong>Laravel</strong></p>
<p>การใช้งาน <strong>Eloquent</strong> นอกจากทำให้นักพัฒนาสะดวกสบายยังทำให้งานโปรเจ็คต่างๆเสร็จอย่างรวดเร็ว อีกทั้งยัง code ยังเป็นระเบียนและสามารถต่อยอดแก้ไขได้ในอนาคต ผู้เขียนหวังว่าบทความนี้จะเป็นประโยชน์ต่อผู้อ่าน หากมีข้อสงสัยตรงไหนสอบถามใน Comment ได้เลยครับ</p>
<p>ขอบคุณครับ</p><p>The post <a href="https://www.itoffside.com/laravel-ep13-database-eloquent/">Laravel – EP13 Database กับการใช้งาน Eloquent</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-ep13-database-eloquent/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel การตรวจสอบข้อมูลก่อนบันทึกด้วย Validation</title>
		<link>https://www.itoffside.com/laravel-validation/</link>
					<comments>https://www.itoffside.com/laravel-validation/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Wed, 03 Aug 2022 08:03:58 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Laravel Validation]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PHP Framework]]></category>
		<category><![CDATA[Validation]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=3363</guid>

					<description><![CDATA[<p>สวัสดีครับ วันนี้ผมมาแนะนำการใช้งาน Validation ของ Laravel ซึ่งใช้งานได้ง่ายมากๆ โดยประโยชน์ของ Laravel validation นั้นเอาไว้สำหรับตรวจสอบข้อมูลว่าถูกต้องตามที่เราต้องการหรือไม่ ก่อนที่จะบันทึกลงฐานข้อมูล(Database) ทำให้เราสามารถจัดเก็บข้อมูลถูกต้องตามความต้องการเช่น เราต้องการเก็บเบอร์โทรศัพท์ลงฐาน...</p>
<p>The post <a href="https://www.itoffside.com/laravel-validation/">Laravel การตรวจสอบข้อมูลก่อนบันทึกด้วย Validation</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>สวัสดีครับ วันนี้ผมมาแนะนำการใช้งาน <strong>Validation ของ Laravel</strong> ซึ่งใช้งานได้ง่ายมากๆ โดยประโยชน์ของ <strong>Laravel validation</strong> นั้นเอาไว้สำหรับตรวจสอบข้อมูลว่าถูกต้องตามที่เราต้องการหรือไม่ ก่อนที่จะบันทึกลงฐานข้อมูล(Database) ทำให้เราสามารถจัดเก็บข้อมูลถูกต้องตามความต้องการเช่น เราต้องการเก็บเบอร์โทรศัพท์ลงฐานข้อมูล ถ้าเราไม่ได้ใช้ <strong>Laravel validation</strong> ข้อมูลที่ผู้ใช้งานระบบจะกรอกมาจะเป็น 081-1448181 หรือ 02-2330-343 หรือ 099-234-2421 ซึ่งจริงๆแล้วเราไม่ได้ต้องการ ขีดหรือ (-) เลย เราแค่ต้องการให้ผู้ใช้งานกรอกแค่ตัวเลข เช่น 0811448181 เท่านั้น ดังนั้นเราจึงจำเป็นต้องใช้ Laravel validation นั้นเอง<span id="more-3363"></span></p>
<p><strong>Laravel Validation</strong> เป็น แพคเก็จที่ติดมาตอนติดตั้ง Laravel เลยเราไม่ต้องไปติดตั้งเพิ่ม ในการเรียนรู้การใช้งาน <strong>Laravel Validation</strong> นั้นเรียนรู้ง่าย ไม่ซับซ้อน ใช้งานไม่ยาก เพียงเรากำหนดเงื่อนไข ที่ต้องการ เวลา ผู้ใช้กรอกข้อมูลแล้ว submit form มา จังหวะนี้ ที่ Validation ทำการตรวจสอบ ถ้าหากว่าข้อมูลที่ตรวจสอบไม่ถูกต้อง ก็จะส่ง ข้อความมาหาผู้ใช้ แสดงผลที่หน้าฟอร์มทันที</p>
<h3>เริ่มต้นใช้งาน โดยเริ่มจากทำ ตัวอย่างง่ายๆ ระบบ เพิ่มหนังสือ ครับ</h3>
<h4>#กำหนด Routes (เส้นทาง)</h4>
<p>เริ่มแรก ให้เรา กำหนด routes ที่ <em>routes/web.php</em></p><pre class="crayon-plain-tag">use App\Http\Controllers\BookController;
 
Route::get('/book/create', [BookController::class, 'create']);
Route::post('/book', [BookController::class, 'store']);
Route::get('/book/success', [BookController::class, 'saveSuccess']);</pre><p></p>
<h4>#สร้าง Validation</h4>
<p>ให้เราทำการสร้าง validation สำหรับตรวจสอบข้อมูลโดนใช้คำสั่งใน command<br />
<span style="color: #ff00ff;">php artisan make:request BookSave</span><br />
หรือจะสร้างไฟล์ใน App/http/requests/BookSave.php ก็ได้</p>
<p><strong>นำโค๊ดด้านล่างไปวางไว้ในไฟล์ BookSave.php</strong></p><pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class BookSave extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'firstname' =&gt; 'required',
            'lastname' =&gt; 'required',
            'username' =&gt; 'required',
            'email' =&gt; 'required|email',
            'tel' =&gt; 'required|numeric|digits_between:8,15',
        ];
    }

    public function messages()
    {
        return [
            'firstname.required' =&gt; 'โปรดระบุชื่อจริง',
            'lastname.required' =&gt; 'โปรดระบุนามสกุล',
            'username.required' =&gt; 'โปรดระบุชื่อผู้ใช้',
            'email.required' =&gt; 'โปรดระบุอีเมล์',
            'email.email' =&gt; 'รูปแบบอีเมล์ไม่ถูกต้อง',
            'tel.required' =&gt; 'โปรดระบุเบอร์โทร',
            'tel.numeric' =&gt; 'ระบุเฉพาะตัวเลขเท่านั้น',
            'tel.digits_between' =&gt; 'เบอร์โทรต้องมี 8 - 15 ตัว',
        ];
    }
}</pre><p><span style="color: #ff6600;"><strong>อธิบายโค๊ด</strong></span><br />
<strong>บรรทัดที่ 14-17</strong> กรณีที่ไม่ต้องการตรวจสอบสิทธิ์การเข้าถึงเช่นผู้ใช้คนนี้สามารถ บันทึกข้อมูล หรือแก้ไขข้อมูลได้ ให้เราคืนค่าเป็น true ตามตัวอย่างได้เลย<br />
<strong>บรรทัดที่ 24-33</strong> เป็นการกำหนดการตรวจสอบข้อมูลที่ส่งมาจากฟอร์ม<br />
<strong>บรรทัดที่ 27</strong> ตรวจสอบว่าชื่อจริง โดยอ้างอิงจาก หน้าฟอร์ม name=&#8221;firstname&#8221; ห้ามว่าง<br />
<strong>บรรทัดที่ 28</strong> ตรวจสอบนามสกุล ห้ามว่าง อ้างอิงหลักการเดียวกับบรรทัดบน เช่นกันคือ lastname<br />
<strong>บรรทัดที่ 29</strong> ตรวจสอบ username ห้ามว่าง<br />
<strong>บรรทัดที่ 30</strong> ตรวจสอบ email ห้ามว่างและ รูปแบบต้องเป็นอีเมล์ เช่น sample@mail.com หรือ test@hotmail.com<br />
<strong>บรรทัดที่ 31</strong> ตรวจสอบ เบอร์โทร ห้ามว่าง, ต้องเป็นตัวเลขเท่านั้น และมีจำนวนตัวอักษรตั้งแต่ 8 ตัวถึง 15 ตัว</p>
<p><strong>บรรทัดที่ 35-47</strong> เป็นการกำหนดข้อความแสดงผลถ้าตรวจสอบแล้วไม่ผ่าน ตรงนี้ถ้าเราไม่มีฟังก์ชั่น messages() นี้ ระบบจะไปเอาข้อความ Default จากไฟล์ resources/lang/en/validation.php หรือ resources/lang/xx/validation.php ตาม local ที่เราตั้งค่าครับ <span style="color: #808080;">(ปล. เราสามารถ แก้ไขไฟล์แสดงข้อความ error ได้เหมือนกัน)</span></p>
<p>เราสามารถดู rule เพิ่มเติมนอกจากตัวอย่าง ได้ซึ่งมีให้ใช้งานในหลากหลายงานเยอะมาก<br />
<a href="https://laravel.com/docs/9.x/validation#available-validation-rules" target="_blank" rel="noopener">https://laravel.com/docs/9.x/validation#available-validation-rules</a></p>
<h4>#สร้าง Controller</h4>
<p>ให้เราทำการสร้าง controller ชื่อ BookController จะสร้างโดยใช้คำสั่งใน command<br />
<span style="color: #ff00ff;">php artisan make:controller BookController</span><br />
หรือจะสร้างไฟล์ใน App/http/controllers/BookController.php ก็ได้เช่นกัน<br />
<strong>แล้วให้นำโค๊ดด้านล่างไปวางไว้</strong></p><pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Controllers;

use App\Http\Requests\BookSave;

class BookController extends Controller
{
    public function create()
    {
        return view('book.create');
    }

    public function store(BookSave $request)
    {
        return redirect('/book/success');
    }

    public function saveSuccess()
    {
        return view('book.save_success');
    }
}</pre><p><span style="color: #ff6600;"><strong>อธิบายโค๊ด</strong></span><br />
<strong>บรรทัด 5</strong> เรียกใช้ BookSave Validate โดยใช้คำสั่ง use App\Http\Requests\BookSave<br />
<strong>บรรทัดที่ 9-12</strong> ฟังก์ชั่น create() แสดงผลหน้าฟอร์ม<br />
<strong>บรรทัดที่ 14-17</strong> ฟังก์ชั่น store() บันทึกข้อมูลฟอร์ม เมื่อฟอร์ม Submit มา จะผ่าน BookSave ก่อนเข้า Controller Method<br />
<strong>บรรทัดที่ 19-22</strong> ฟังก์ชั่น saveSuccess() แสดงหน้าจอเมื่อบันทึกข้อมูลสำเร็จ</p>
<h4>#สร้าง View</h4>
<p>&#8211; หน้าจอฟอร์ม create.blade.php<br />
ให้เราสร้างไฟล์ view ที่ resources/views/book/create.blade.php (ถ้าไม่มีโฟล์เดอร์ book ให้สร้างขึ้นมาเลยครับ) <strong>แล้วนำโค๊ดด้านล่างไปวางไว้</strong></p><pre class="crayon-plain-tag">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;

&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&gt;
    &lt;title&gt;Shop Book&lt;/title&gt;
    &lt;link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous"&gt;
&lt;/head&gt;

&lt;body class="bg-light"&gt;
    &lt;div class="container" style="width: 960px;"&gt;
        &lt;main&gt;
            &lt;div class="py-5 text-center"&gt;
                &lt;img src="https://laravel.com/img/logotype.min.svg"&gt;
                &lt;h2&gt;Checkout form&lt;/h2&gt;
                &lt;p class="lead"&gt;ระบบสั่งซื้อสินค้าออนไลน์ ง่ายดายเพียงปลายนิ้ว&lt;/p&gt;
            &lt;/div&gt;

            &lt;div class="row g-5"&gt;
                &lt;div class="col-md-5 col-lg-4 order-md-last"&gt;
                    &lt;h4 class="d-flex justify-content-between align-items-center mb-3"&gt;
                        &lt;span class="text-primary"&gt;Your cart&lt;/span&gt;
                        &lt;span class="badge bg-primary rounded-pill"&gt;3&lt;/span&gt;
                    &lt;/h4&gt;
                    &lt;ul class="list-group mb-3"&gt;
                        &lt;li class="list-group-item d-flex justify-content-between lh-sm"&gt;
                            &lt;div&gt;
                                &lt;h6 class="my-0"&gt;ขนมปังใส้มายองเนส&lt;/h6&gt;
                                &lt;small class="text-muted"&gt;สุดยอดขนมปังแสนอร่อย อิ่มแน่นอน&lt;/small&gt;
                            &lt;/div&gt;
                            &lt;span class="text-muted"&gt;฿12&lt;/span&gt;
                        &lt;/li&gt;
                        &lt;li class="list-group-item d-flex justify-content-between lh-sm"&gt;
                            &lt;div&gt;
                                &lt;h6 class="my-0"&gt;นมเปรี้ยว ตราสุขใจ&lt;/h6&gt;
                                &lt;small class="text-muted"&gt;นมเปรี้ยวขนาด 100ML อร่อยเต็มๆ&lt;/small&gt;
                            &lt;/div&gt;
                            &lt;span class="text-muted"&gt;฿10&lt;/span&gt;
                        &lt;/li&gt;
                        &lt;li class="list-group-item d-flex justify-content-between lh-sm"&gt;
                            &lt;div&gt;
                                &lt;h6 class="my-0"&gt;ยาสีฟัน มายดรีม&lt;/h6&gt;
                                &lt;small class="text-muted"&gt;ยาสีฟัน ฟันขาวสดชื่น&lt;/small&gt;
                            &lt;/div&gt;
                            &lt;span class="text-muted"&gt;฿20&lt;/span&gt;
                        &lt;/li&gt;
                        &lt;li class="list-group-item d-flex justify-content-between bg-light"&gt;
                            &lt;div class="text-success"&gt;
                                &lt;h6 class="my-0"&gt;Promo code&lt;/h6&gt;
                                &lt;small&gt;ส่วนลดพิเศษ&lt;/small&gt;
                            &lt;/div&gt;
                            &lt;span class="text-success"&gt;−฿5&lt;/span&gt;
                        &lt;/li&gt;
                        &lt;li class="list-group-item d-flex justify-content-between"&gt;
                            &lt;span&gt;Total (USD)&lt;/span&gt;
                            &lt;strong&gt;฿37&lt;/strong&gt;
                        &lt;/li&gt;
                    &lt;/ul&gt;

                    &lt;form class="card p-2"&gt;
                        &lt;div class="input-group"&gt;
                            &lt;input type="text" class="form-control" placeholder="Promo code"&gt;
                            &lt;button type="submit" class="btn btn-secondary"&gt;Redeem&lt;/button&gt;
                        &lt;/div&gt;
                    &lt;/form&gt;
                &lt;/div&gt;
                &lt;div class="col-md-7 col-lg-8"&gt;
                    &lt;h4 class="mb-3"&gt;Billing address&lt;/h4&gt;
                    &lt;form method="post" action="{{ url('/book') }}"&gt;
                        @csrf
                        &lt;div class="row g-3"&gt;
                            &lt;div class="col-sm-6"&gt;
                                &lt;label class="form-label"&gt;ชื่อ&lt;/label&gt;
                                &lt;input type="text" name="firstname" class="form-control @error('firstname') is-invalid @enderror" value="{{ old('firstname') }}"&gt;
                                &lt;div class="invalid-feedback"&gt;
                                    {{ $errors-&gt;first('firstname') }}
                                &lt;/div&gt;
                            &lt;/div&gt;

                            &lt;div class="col-sm-6"&gt;
                                &lt;label class="form-label"&gt;นามสกุล&lt;/label&gt;
                                &lt;input type="text" name="lastname" class="form-control @error('lastname') is-invalid @enderror" value="{{ old('lastname') }}"&gt;
                                &lt;div class="invalid-feedback"&gt;
                                    {{ $errors-&gt;first('lastname') }}
                                &lt;/div&gt;
                            &lt;/div&gt;

                            &lt;div class="col-12"&gt;
                                &lt;label for="username" class="form-label"&gt;Username&lt;/label&gt;
                                &lt;div class="input-group has-validation"&gt;
                                    &lt;span class="input-group-text"&gt;@&lt;/span&gt;
                                    &lt;input type="text" name="username" class="form-control @error('username') is-invalid @enderror" value="{{ old('username') }}"&gt;
                                    &lt;div class="invalid-feedback"&gt;
                                        {{ $errors-&gt;first('username') }}
                                    &lt;/div&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;

                            &lt;div class="col-6"&gt;
                                &lt;label for="email" class="form-label"&gt;Email&lt;/label&gt;
                                &lt;input type="text" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="you@example.com" value="{{ old('email') }}"&gt;
                                &lt;div class="invalid-feedback"&gt;
                                    {{ $errors-&gt;first('email') }}
                                &lt;/div&gt;
                            &lt;/div&gt;

                            &lt;div class="col-6"&gt;
                                &lt;label for="zip" class="form-label"&gt;เบอร์โทร&lt;/label&gt;
                                &lt;input type="text" name="tel" class="form-control @error('tel') is-invalid @enderror" value="{{ old('tel') }}"&gt;
                                &lt;div class="invalid-feedback"&gt;
                                    {{ $errors-&gt;first('tel') }}
                                &lt;/div&gt;
                            &lt;/div&gt;

                            &lt;div class="col-12"&gt;
                                &lt;label for="address" class="form-label"&gt;ที่อยู่&lt;/label&gt;
                                &lt;input type="text" name="address" class="form-control" placeholder="1234 หมู่ 9 ต.บางรัก อ.บางประกง กรุงเทพฯ 11220" value="{{ old('address') }}"&gt;
                                &lt;div class="invalid-feedback"&gt;
                                    Please enter your shipping address.
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;

                        &lt;hr class="my-4"&gt;

                        &lt;button class="w-100 btn btn-primary btn-lg" type="submit"&gt;Continue to checkout&lt;/button&gt;
                    &lt;/form&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/main&gt;

        &lt;footer class="my-5 pt-5 text-muted text-center text-small"&gt;
            &lt;p class="mb-1"&gt;&amp;copy; 2017–2022 Company Name&lt;/p&gt;
            &lt;ul class="list-inline"&gt;
                &lt;li class="list-inline-item"&gt;&lt;a href="#"&gt;Privacy&lt;/a&gt;&lt;/li&gt;
                &lt;li class="list-inline-item"&gt;&lt;a href="#"&gt;Terms&lt;/a&gt;&lt;/li&gt;
                &lt;li class="list-inline-item"&gt;&lt;a href="#"&gt;Support&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/footer&gt;
    &lt;/div&gt;
    
&lt;/body&gt;

&lt;/html&gt;</pre><p><span style="color: #ff6600;"><strong>อธิบายโค๊ด</strong></span><br />
<strong>บรรทัดที่ 72-130</strong> เป็นฟอร์ม ที่มีช่องกรอกข้อมูล<br />
จะอธิบายที่ช่อง firstname ที่บรรทัด 76 โดยสิ่งที่อ้างอิงกันคือ name=&#8221;firstname&#8221; จะถูกไปอ้างอิงในไฟล์ BookSave.php ตอนทำ rule นั้นเอง และ เราได้กำหนด class is-invalid ให้กับช่องนี้กรณีมี error ตรวจสอบไม่ผ่าน ให้มี is-invalid (class ที่แสดงกรอบสีแดงพร้อม ไอคอนตกใจ) และ แสดงข้อความหลักจากกด submit ไปแล้วเพื่อไม่ให้ค่าหายไปโดยใช้ old ซึ่งเป็น session แบบ flash ที่ใช้เพียงครั้งเดียว</p>
<p>ส่วนช่องอื่นๆ ก็ใช้หลักการเดียว เพียงแต่เปลี่ยนชื่อฟิล์ด แค่นั้นครับ</p>
<p>&#8211; หน้าจอแสดงผลลัพท์ save_success.blade.php<br />
ให้เราสร้างไฟล์ view ที่ resources/views/book/save_success.blade.php แล้ว<strong>นำโค๊ดด้านล่างไปวางไว้</strong></p><pre class="crayon-plain-tag">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;

&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&gt;
    &lt;title&gt;Shop Book&lt;/title&gt;
    &lt;link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous"&gt;
&lt;/head&gt;

&lt;body class="bg-light"&gt;
    &lt;div class="container" style="width: 960px;"&gt;
        &lt;div class="text-center"&gt;
            &lt;h1 class="mt-5"&gt;บันทึกข้อมูลสำเร็จ&lt;/h1&gt;
            &lt;a href="{{ url('/book/create') }}" class="btn btn-primary" role="button"&gt;กลับไปหน้าฟอร์ม&lt;/a&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/body&gt;

&lt;/html&gt;</pre><p><span style="color: #ff6600;"><strong>อธิบายโค๊ด</strong></span><br />
โค๊ดส่วนนี้การทำงานคือแสดงผลลัพท์หน้าจออย่างเดียว ให้ผู้ใช้เห็นว่า บันทึกข้อมูลผ่านการตรวจสอบแล้ว</p>
<p>มาดูผลลัพท์กันครับ</p>
<figure id="attachment_3371" aria-describedby="caption-attachment-3371" style="width: 660px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" class="wp-image-3371 size-large" src="https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-1024x617.png" alt="" width="660" height="398" srcset="https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-1024x617.png 1024w, https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-300x181.png 300w, https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-768x463.png 768w, https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-1536x926.png 1536w, https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-2048x1235.png 2048w, https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-80x48.png 80w" sizes="(max-width: 660px) 100vw, 660px" /><figcaption id="caption-attachment-3371" class="wp-caption-text">Laravel validation ตรวจสอบข้อมูลก่อนบันทึกอย่างง่าย</figcaption></figure>
<p>สำหรับการใช้งาน Laravel validation ก็ประมาณนี้ ซึ่งจริงๆมี rule ที่เยอะแยะมากและช่วยเราทำให้เราลดเวลาในการเขียนเองเยอะไปมาก เดี่ยวไว้คราวหน้าจะมาแนะนำทริปใหม่ๆ เพิ่มเติม สำหรับบทความนี้ก็มีเพียงเท่านี้ ขอบคุณครับ</p>
<p><strong>หากต้องการดาวน์โหลด source code Laravel Validation ของตัวอย่างนี้ทั้งหมดสามารถ inbox มาขอได้ที่เพจ</strong><br />
<a href="https://www.facebook.com/itoffside" target="_blank" rel="noopener">https://www.facebook.com/itoffside</a><br />
กติกาคือ เพียงแค่กดไลท์เพจ แล้วแคปเจอร์กดไลท์ แล้วส่ง inbox มาหาเราทางเราจะส่งลิงค์ดาวน์โหลดไปให้</p><p>The post <a href="https://www.itoffside.com/laravel-validation/">Laravel การตรวจสอบข้อมูลก่อนบันทึกด้วย Validation</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-validation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel WorkShop ระบบ Blog และ Login</title>
		<link>https://www.itoffside.com/laravel-workshop-blog-and-login/</link>
					<comments>https://www.itoffside.com/laravel-workshop-blog-and-login/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Thu, 31 Mar 2022 21:56:48 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQLi]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PHP Framework]]></category>
		<category><![CDATA[workshop]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=3316</guid>

					<description><![CDATA[<p>ระบบจัดการ Blog สามารถ เพิ่ม แก้ไข ลบ และแสดงรายการ ได้ มีการตรวจสอบการกรอกข้อมูล และมีระบบยืนยันตัวตนผ่านการล๊อกอิน(Login) เป็นระบบ workshop laravel อย่างง่ายๆ ให้ผู้อ่านผู้ชม ได้เห็นการเขียนโปรแกรมด้วย laravel ว่าเขียนประมาณไหนบ้าง พาใช้งาน Laravel ผ่าน Workshop Blog/Login เพื่อนๆจะได้รู้จักกับ กา...</p>
<p>The post <a href="https://www.itoffside.com/laravel-workshop-blog-and-login/">Laravel WorkShop ระบบ Blog และ Login</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>ระบบจัดการ Blog</strong> สามารถ เพิ่ม แก้ไข ลบ และแสดงรายการ ได้ มีการตรวจสอบการกรอกข้อมูล และมีระบบยืนยันตัวตนผ่านการล๊อกอิน(Login) เป็นระบบ <strong>workshop laravel</strong> อย่างง่ายๆ ให้ผู้อ่านผู้ชม ได้เห็นการเขียนโปรแกรมด้วย <strong>laravel</strong> ว่าเขียนประมาณไหนบ้าง</p>
<p><span class="style-scope yt-formatted-string" dir="auto">พาใช้งาน <strong>Laravel</strong> ผ่าน <strong>Workshop Blog/Login</strong> เพื่อนๆจะได้รู้จักกับ</span></p>
<ul>
<li><span class="style-scope yt-formatted-string" dir="auto">การสร้าง <strong>Controller, Model, View</strong> &#8211; การกำหนด Route ของ Web (GET, POST, PUT, DELETE)</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Migrate</strong> ของ database</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Middleware</strong> และการใช้งาน middleware ผ่าน <strong>Route</strong></span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ Authen login แบบ Manual</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>CRUD</strong> ของ Blog</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Paginate</strong> แบ่งหน้า</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Validate</strong> form</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Relation</strong> ของ ORM (One to Many)</span></li>
</ul>
<p><span id="more-3316"></span></p>
<p>วิดีโอประกอบการสอน workshop</p>
<p><iframe title="Laravel Workshop ระบบ Blog และ Login" width="660" height="371" src="https://www.youtube.com/embed/wA75lGFF9E8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p><span class="style-scope yt-formatted-string" dir="auto">ดาวน์โหลด Sourcecode </span><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://github.com/ipball/Laravel-Blog" target="_blank" rel="nofollow noopener">https://github.com/ipball/Laravel-Blog</a></p><p>The post <a href="https://www.itoffside.com/laravel-workshop-blog-and-login/">Laravel WorkShop ระบบ Blog และ Login</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-workshop-blog-and-login/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel &#8211; EP12 Database กับการทำ Migration</title>
		<link>https://www.itoffside.com/laravel-database-migration/</link>
					<comments>https://www.itoffside.com/laravel-database-migration/#comments</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Sat, 06 Jun 2020 16:47:20 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[laravel migrate]]></category>
		<category><![CDATA[laravel migration]]></category>
		<category><![CDATA[PHP Framework]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2905</guid>

					<description><![CDATA[<p>Database migrate ของ Laravel เป็นการทำสคริปเพื่อ Generate ตาราง ให้เราผ่านคำสั่ง Laravel ที่เราเขียนขึ้นมา ซึ่งข้อดีช่วยให้ทำเราสามารถทำงานร่วมกันเป็นทีมได้ดียิ่งขึ้น ยกตัวอย่างให้เห็นภาพนะครับ เช่น ปกติเวลาเรา ทำงานมีการสร้าง ตารางใหม่หรือ อัพเดทฟิล์ดในตาราง ที่นี้เราก็ ไปใช้พวก phpmyadmin แล้ว cop...</p>
<p>The post <a href="https://www.itoffside.com/laravel-database-migration/">Laravel – EP12 Database กับการทำ Migration</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Database migrate ของ Laravel เป็นการทำสคริปเพื่อ Generate ตาราง ให้เราผ่านคำสั่ง Laravel ที่เราเขียนขึ้นมา ซึ่งข้อดีช่วยให้ทำเราสามารถทำงานร่วมกันเป็นทีมได้ดียิ่งขึ้น ยกตัวอย่างให้เห็นภาพนะครับ เช่น ปกติเวลาเรา ทำงานมีการสร้าง ตารางใหม่หรือ อัพเดทฟิล์ดในตาราง ที่นี้เราก็ ไปใช้พวก phpmyadmin แล้ว copy script ส่งให้กันไปๆ มาๆ การทำงานหลายๆคนก็เริ่มลำบากละ เพราะว่า ต้องมานั่ง run script แล้วเผลอๆ บางคนลืม ทำสคริปส่งไปให้อีกทำให้ เกิดปัญหาขึ้นมา ดังนั้น Migrate จึงเกิดมาการนี้ ให้เหล่าโปรแกรมเมอร์ เวลาต้องการสร้างหรือแก้ไขตาราง ก็มาเขียนคำสั่ง (PHP) แล้ว Generate เอา ทำให้ เวลาคนอื่น มาทำงานต่อก็เพียงแค่ Pull code จาก เพื่อนแล้ว ก็ run migrate เป็นอันจบแล้ว ได้ฐานข้อมูลล่าสุด พร้อมเขียนโค๊ด ได้ทันที<span id="more-2905"></span></p>
<p>สำหรับบทความนี้ ผมมาสอนวิธีใช้งานกันนะครับ</p>
<p><strong>Case study: สร้างตาราง orders</strong></p>
<p><strong>โดยมีฟิล์ดดังนี้</strong><br />
id (int), name (varchar 100), email (varchar 100), tel (varchar 20), detail (text)</p>
<p>ให้เราเปิด command line ขึ้นมานะครับ แล้วพิมพ์คำสั่ง สร้างไฟล์ migration</p><pre class="crayon-plain-tag">php artisan make:migration create_orders_table</pre><p><img decoding="async" class="alignnone size-full wp-image-3248" src="https://www.itoffside.com/wp-content/uploads/2018/11/2020-05-10_0-18-59.jpg" alt="" width="566" height="143" srcset="https://www.itoffside.com/wp-content/uploads/2018/11/2020-05-10_0-18-59.jpg 566w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-05-10_0-18-59-300x76.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-05-10_0-18-59-80x20.jpg 80w" sizes="(max-width: 566px) 100vw, 566px" /></p>
<p>หลังจากเราสร้างมาแล้ว ให้เรา เขียน code migrate ดังนี้</p><pre class="crayon-plain-tag">&lt;?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateOrdersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('orders', function (Blueprint $table) {
            $table-&gt;bigIncrements('id');
            $table-&gt;string('name', 100);
            $table-&gt;string('email', 100);
            $table-&gt;string('tel', 20)-&gt;nullable();
            $table-&gt;text('detail')-&gt;nullable();
            $table-&gt;timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('orders');
    }
}</pre><p>เมื่อเขียนคำสั่ง migrate เรียบร้อยให้เรา run command</p><pre class="crayon-plain-tag">php artisan migrate</pre><p>แล้วกลับไปดู ฐานข้อมูล ของเรา จะเห็นว่ามีการเพิ่มตาราง มาแล้ว<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-3256" src="https://www.itoffside.com/wp-content/uploads/2018/11/laravel-migrate-01.png" alt="Laravel Migrate" width="737" height="251" srcset="https://www.itoffside.com/wp-content/uploads/2018/11/laravel-migrate-01.png 737w, https://www.itoffside.com/wp-content/uploads/2018/11/laravel-migrate-01-300x102.png 300w, https://www.itoffside.com/wp-content/uploads/2018/11/laravel-migrate-01-80x27.png 80w" sizes="auto, (max-width: 737px) 100vw, 737px" /></p>
<p>ทั้งนี้เรายังสามารถ Rollback migration ของเราที่ทำมาด้วยคำสั่ง</p><pre class="crayon-plain-tag">php artisan migrate:rollback</pre><p>หรือต้องการ rollback กลับไปยังขั้นตอนใดขั้นตอนหนึ่งก็ใช้คำสั่ง</p><pre class="crayon-plain-tag">php artisan migrate:rollback --step=5</pre><p>เรามาดูคำสั่งแต่ละคำสั่งของ migrate</p>
<h3>ตาราง(Tables)</h3>
<p><strong>สร้างตาราง</strong></p><pre class="crayon-plain-tag">Schema::create('orders', function (Blueprint $table) {
  //code 
}</pre><p><strong>เปลี่ยนชื่อตาราง</strong></p><pre class="crayon-plain-tag">Schema::rename($from, $to);</pre><p><strong>ลบตาราง</strong></p><pre class="crayon-plain-tag">Schema::drop('users');</pre><p></p>
<h3>คอลัมน์(Columns)</h3>
<p>หลังจากเรามีการสร้างตารางมาแล้วให้เราเขียนคำสั่ง สร้าง columns ลงในตารางภายใน Schema::table ฟังก์ชั่น&nbsp;</p>
<p><strong>สร้างคอลัมน์</strong></p><pre class="crayon-plain-tag">Schema::table('users', function (Blueprint $table) {
    $table-&gt;string('email');
});</pre><p>จะเห็นว่าเราจะสามารถกำหนดประเภทคอลัมน์ได้ว่า เป็นอะไร จากตัวอย่างเป็น string (varchar)&nbsp; มาดูว่าประเภท คอลัมน์ที่มีให้ใส่มีอะไรบ้าง</p>
<p><span style="text-decoration: underline;"><strong>ประเภทคอลัมน์ที่สามารถกำหนดได้</strong></span></p>
<table>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">id</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Alias of&nbsp;<code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">bigIncrements</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'id'</span><span class="token punctuation">)</span></code>.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">foreignId</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'user_id'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Alias of&nbsp;<code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">unsignedBigInteger</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'user_id'</span><span class="token punctuation">)</span></code>.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">bigIncrements</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'id'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Auto-incrementing UNSIGNED BIGINT (primary key) equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">bigInteger</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'votes'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>BIGINT equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">binary</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'data'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>BLOB equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">boolean</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'confirmed'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>BOOLEAN equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">char</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'name'</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>CHAR equivalent column with a length.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">date</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'created_at'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>DATE equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">dateTime</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'created_at'</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>DATETIME equivalent column with precision (total digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">dateTimeTz</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'created_at'</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>DATETIME (with timezone) equivalent column with precision (total digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">decimal</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'amount'</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>DECIMAL equivalent column with precision (total digits) and scale (decimal digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">double</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'amount'</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>DOUBLE equivalent column with precision (total digits) and scale (decimal digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">enum</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'level'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token single-quoted-string string">'easy'</span><span class="token punctuation">,</span> <span class="token single-quoted-string string">'hard'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>ENUM equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">float</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'amount'</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>FLOAT equivalent column with a precision (total digits) and scale (decimal digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">geometry</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'positions'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>GEOMETRY equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">geometryCollection</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'positions'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>GEOMETRYCOLLECTION equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">increments</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'id'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Auto-incrementing UNSIGNED INTEGER (primary key) equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">integer</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'votes'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>INTEGER equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">ipAddress</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'visitor'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>IP address equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">json</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'options'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>JSON equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">jsonb</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'options'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>JSONB equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">lineString</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'positions'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>LINESTRING equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">longText</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'description'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>LONGTEXT equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">macAddress</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'device'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>MAC address equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">mediumIncrements</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'id'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Auto-incrementing UNSIGNED MEDIUMINT (primary key) equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">mediumInteger</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'votes'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>MEDIUMINT equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">mediumText</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'description'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>MEDIUMTEXT equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">morphs</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'taggable'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Adds&nbsp;<code class=" language-php">taggable_id</code>&nbsp;UNSIGNED BIGINT and&nbsp;<code class=" language-php">taggable_type</code>&nbsp;VARCHAR equivalent columns.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">uuidMorphs</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'taggable'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Adds&nbsp;<code class=" language-php">taggable_id</code>&nbsp;CHAR(36) and&nbsp;<code class=" language-php">taggable_type</code>&nbsp;VARCHAR(255) UUID equivalent columns.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">multiLineString</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'positions'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>MULTILINESTRING equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">multiPoint</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'positions'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>MULTIPOINT equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">multiPolygon</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'positions'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>MULTIPOLYGON equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">nullableMorphs</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'taggable'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Adds nullable versions of&nbsp;<code class=" language-php"><span class="token function">morphs</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code>&nbsp;columns.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">nullableUuidMorphs</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'taggable'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Adds nullable versions of&nbsp;<code class=" language-php"><span class="token function">uuidMorphs</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code>&nbsp;columns.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">nullableTimestamps</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Alias of&nbsp;<code class=" language-php"><span class="token function">timestamps</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code>&nbsp;method.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">point</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'position'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>POINT equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">polygon</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'positions'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>POLYGON equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">rememberToken</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Adds a nullable&nbsp;<code class=" language-php">remember_token</code>&nbsp;VARCHAR(100) equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">set</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'flavors'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token single-quoted-string string">'strawberry'</span><span class="token punctuation">,</span> <span class="token single-quoted-string string">'vanilla'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>SET equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">smallIncrements</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'id'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Auto-incrementing UNSIGNED SMALLINT (primary key) equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">smallInteger</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'votes'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>SMALLINT equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">softDeletes</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'deleted_at'</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Adds a nullable&nbsp;<code class=" language-php">deleted_at</code>&nbsp;TIMESTAMP equivalent column for soft deletes with precision (total digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">softDeletesTz</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'deleted_at'</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Adds a nullable&nbsp;<code class=" language-php">deleted_at</code>&nbsp;TIMESTAMP (with timezone) equivalent column for soft deletes with precision (total digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">string</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'name'</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>VARCHAR equivalent column with a length.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">text</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'description'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>TEXT equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">time</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'sunrise'</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>TIME equivalent column with precision (total digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">timeTz</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'sunrise'</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>TIME (with timezone) equivalent column with precision (total digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">timestamp</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'added_on'</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>TIMESTAMP equivalent column with precision (total digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">timestampTz</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'added_on'</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>TIMESTAMP (with timezone) equivalent column with precision (total digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">timestamps</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Adds nullable&nbsp;<code class=" language-php">created_at</code>&nbsp;and&nbsp;<code class=" language-php">updated_at</code>&nbsp;TIMESTAMP equivalent columns with precision (total digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">timestampsTz</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Adds nullable&nbsp;<code class=" language-php">created_at</code>&nbsp;and&nbsp;<code class=" language-php">updated_at</code>&nbsp;TIMESTAMP (with timezone) equivalent columns with precision (total digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">tinyIncrements</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'id'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>Auto-incrementing UNSIGNED TINYINT (primary key) equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">tinyInteger</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'votes'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>TINYINT equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">unsignedBigInteger</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'votes'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>UNSIGNED BIGINT equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">unsignedDecimal</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'amount'</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>UNSIGNED DECIMAL equivalent column with a precision (total digits) and scale (decimal digits).</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">unsignedInteger</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'votes'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>UNSIGNED INTEGER equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">unsignedMediumInteger</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'votes'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>UNSIGNED MEDIUMINT equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">unsignedSmallInteger</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'votes'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>UNSIGNED SMALLINT equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">unsignedTinyInteger</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'votes'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>UNSIGNED TINYINT equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">uuid</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'id'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>UUID equivalent column.</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token variable">$table</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">year</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'birth_year'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td>
<td>YEAR equivalent column.</td>
</tr>
</tbody>
</table>
<p>**ข้อมูลตารางประเภทคอลัมน์นำมาจาก https://laravel.com/docs</p>
<p><strong>Option เพิ่มเติมของคอลัมน์ (Column Modifiers)</strong></p>
<p>เช่นถ้าต้องการให้ column A สามารถว่างได้ สามารถเขียนได้ตาม code ด้านล่างนี้</p><pre class="crayon-plain-tag">Schema::table('users', function (Blueprint $table) {
    $table-&gt;string('email')-&gt;nullable();
});</pre><p>ซึ่ง option ของ column มีตามรายการ ด้านล่างนี้</p>
<table>
<thead>
<tr>
<th>Modifier</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">after</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'column'</span><span class="token punctuation">)</span></code></td>
<td>ทำการวางคอลัมน์ไว้หลัง &#8216;column&#8217; (สำหรับ MySQL)</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">autoIncrement</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code></td>
<td>เซ็ต Integer ให้กับ auto-increment ให้กับคอลัมน์ พร้อมทั้งเป็น Primary key</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">charset</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'utf8mb4'</span><span class="token punctuation">)</span></code></td>
<td>ระบุ character ให้กับคอลัมน์ (สำหรับ MySQL)</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">collation</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'utf8mb4_unicode_ci'</span><span class="token punctuation">)</span></code></td>
<td>ระบุ collation (MySQL/PostgreSQL/SQL Server)</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">comment</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'my comment'</span><span class="token punctuation">)</span></code></td>
<td>ใส่ comment ให้กับคอลัมน์ได้</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token keyword">default</span><span class="token punctuation">(</span><span class="token variable">$value</span><span class="token punctuation">)</span></code></td>
<td>ระบุค่า &#8220;default&#8221; ให้กับคอลัมน์</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">first</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code></td>
<td>วางคอลัมน์ไว้ลำดับแรกของตาราง (MySQL)</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">nullable</span><span class="token punctuation">(</span><span class="token variable">$value</span> <span class="token operator">=</span> <span class="token boolean constant">true</span><span class="token punctuation">)</span></code></td>
<td>สามารถให้คอลัมน์สามารถระบุค่าว่าง(null) ได้</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">storedAs</span><span class="token punctuation">(</span><span class="token variable">$expression</span><span class="token punctuation">)</span></code></td>
<td>สร้าง stored generated ให้กับคอลัมน์ (MySQL)</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">unsigned</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code></td>
<td>เซ็ตคอลัมน์ที่เป็น type integer&nbsp; ให้ UNSIGNED (MySQL)</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">useCurrent</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code></td>
<td>เซ็ตคอลัมน์ที่เป็น type TIMESTAMP&nbsp; ให้ CURRENT_TIMESTAMP เป็น default</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">virtualAs</span><span class="token punctuation">(</span><span class="token variable">$expression</span><span class="token punctuation">)</span></code></td>
<td>สร้าง virtual generated (MySQL)</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">generatedAs</span><span class="token punctuation">(</span><span class="token variable">$expression</span><span class="token punctuation">)</span></code></td>
<td>สร้าง identity กับ ระบุ sequence options ให้กับคอลัมน์ (PostgreSQL)</td>
</tr>
<tr>
<td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">always</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code></td>
<td>กำหนดความสำคัญของค่าตามลำดับ input (PostgreSQL)</td>
</tr>
</tbody>
</table>
<p>**ข้อมูลตารางประเภทคอลัมน์นำมาจาก https://laravel.com/docs</p>
<p><strong>แก้ไขคอลัมน์</strong></p>
<p>เราสามารถแก้ไขคอลัมน์โดยการใส่ code ดังนี้</p><pre class="crayon-plain-tag">Schema::table('users', function (Blueprint $table) {
    $table-&gt;string('name', 50)-&gt;change();
});</pre><p>แต่การใช้คำสั่งแก้ไขเราต้องติดตั้ง composer ก่อน โดย run comman line ดังนี้</p><pre class="crayon-plain-tag">composer require doctrine/dbal</pre><p><strong>ลบคอลัมน์</strong></p>
<p>เราสามารถลบคอลัมน์โดยการใส่ code ดังนี้</p><pre class="crayon-plain-tag">Schema::table('users', function (Blueprint $table) {
    $table-&gt;dropColumn('votes');
});</pre><p><strong>ตั้งค่า Indexes</strong></p>
<p>ใน migration เราสามารถตั้งค่า index ให้กับคอลัมน์ได้ เช่น unique(), index(), primary() โดยดูตัวอย่างจาก code ดังนี้</p><pre class="crayon-plain-tag">$table-&gt;primary('id');
$table-&gt;primary(['id', 'parent_id']); //ตั้ง primary key หลายๆคอลัมน์
$table-&gt;unique('email');
$table-&gt;index('state');</pre><p>เราลองมาดูแบบ full code</p><pre class="crayon-plain-tag">&lt;?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateOrdersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('orders', function (Blueprint $table) {
            $table-&gt;integer('id');
            $table-&gt;string('name', 100);
            $table-&gt;string('email', 100);
            $table-&gt;string('tel', 20)-&gt;nullable();
            $table-&gt;text('detail')-&gt;nullable();
            $table-&gt;timestamps();

            $table-&gt;primary('id');
            $table-&gt;unique('email');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('orders');
    }
}</pre><p>สำหรับบทความ <strong>migration</strong> จบเพีงเท่านี้หากใครมีข้อสงสัยหรือคำถามใดๆ สามารถ comment มาได้ครับ</p><p>The post <a href="https://www.itoffside.com/laravel-database-migration/">Laravel – EP12 Database กับการทำ Migration</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-database-migration/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel &#8211; EP11 การใช้งาน Model</title>
		<link>https://www.itoffside.com/laravel-ep11-model/</link>
					<comments>https://www.itoffside.com/laravel-ep11-model/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Mon, 13 Apr 2020 15:10:32 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[laravel model]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[php7]]></category>
		<category><![CDATA[สอน laravel]]></category>
		<category><![CDATA[สอน model laravel]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2902</guid>

					<description><![CDATA[<p>สำหรับ Model ใน Laravel มีการใช้ Eloquent ORM ที่มาพร้อมกับ Laravel ซึ่งใช้งาน ActiveRecord ที่ทำให้เราเขียนโค๊ดเป็นระเบียบสวยงามและเรียบง่าย ในแต่ละตารางฐานข้อมูลมี &#8220;Model&#8221; ที่เป็นแบบจำลองให้เราสามารถทำงานกับฐานข้อมูล บนการเขียนโค๊ดได้ เปรียบเทียบง่ายๆเช่นเรามี ตาราง products, customer ...</p>
<p>The post <a href="https://www.itoffside.com/laravel-ep11-model/">Laravel – EP11 การใช้งาน Model</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>สำหรับ <strong>Model</strong> ใน Laravel มีการใช้ <strong>Eloquent ORM</strong> ที่มาพร้อมกับ Laravel ซึ่งใช้งาน <strong>ActiveRecord</strong> ที่ทำให้เราเขียนโค๊ดเป็นระเบียบสวยงามและเรียบง่าย ในแต่ละตารางฐานข้อมูลมี &#8220;Model&#8221; ที่เป็นแบบจำลองให้เราสามารถทำงานกับฐานข้อมูล บนการเขียนโค๊ดได้ เปรียบเทียบง่ายๆเช่นเรามี ตาราง products, customer เราก็จะมี <span style="color: #333399;">Model Product.php, Customer.php</span> เป็นต้น<span id="more-2902"></span></p>
<p>ก่อนเริ่มสร้าง Model เราต้องแน่ใจก่อนว่าเรามีการเชื่อมต่อฐานข้อมูลแล้ว วิธีการตรวจสอบสามารถเข้าไปตั้งค่าที่ ไฟล์ .env ดังนี้</p><pre class="crayon-plain-tag">DB_DATABASE=myblog
DB_USERNAME=root
DB_PASSWORD=mypassword</pre><p>Model เวลาเราสร้างแล้วไฟล์จะไปอยู่ที่ App ซึ่งเราสามารถนำไปไว้ที่ไหนก็ได้ แต่ในตัวอย่าง และคำแนะนำของผมผมจะแนะนำให้เรานำไฟล์ Model ไปไว้ที่ App\Models และวิธีการสร้าง Model ให้เราเปิด Command line มาแล้ว ให้พิมพ์คำสั่ง ตามโค๊ดด้านล่าง</p><pre class="crayon-plain-tag">php artisan make:model Models/Flight</pre><p>เรามาเข้ามาดูไฟล์ที่เราสร้างในโฟล์เดอร์ <span style="color: #333399;">App/Models/Flight.php</span><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-3233" src="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-13-02.jpg" alt="" width="506" height="233" srcset="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-13-02.jpg 506w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-13-02-300x138.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-13-02-80x37.jpg 80w" sizes="auto, (max-width: 506px) 100vw, 506px" /></p>
<p>Laravel artisan ยังมีความสามารถในการสร้างไฟล์ migration ได้อีกด้วย (สำหรับ migration คือการเขียนโค๊ด PHP สร้างตารางในฐานข้อมูล) โดยคำสั่งให้เรา เติมคำ &#8211;migration หรือ -m ต่อท้าย ลองดูตัวอย่างครับ</p><pre class="crayon-plain-tag">php artisan make:model Models/Flight -m</pre><p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3234" src="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-17-20.jpg" alt="" width="598" height="101" srcset="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-17-20.jpg 598w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-17-20-300x51.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-17-20-80x14.jpg 80w" sizes="auto, (max-width: 598px) 100vw, 598px" /></p>
<p>หลังจากใช้คำสั่งสร้าง Model พร้อม Migration แล้วไฟล์ Migration จะอยู่ในโฟล์เดอร์ <span style="color: #333399;">database/migrations</span></p>
<p>ให้เรากลับไปเปิดไฟล์ <span style="color: #333399;">XXX_XX_XX_XXXXX_create_flights_table.php</span> ในโฟล์เดอร์ <span style="color: #0000ff;">database/migrations</span> แล้วเพิ่มเติมโค๊ดลงไปแบบตัวอย่างด้านล่าง</p><pre class="crayon-plain-tag">&lt;?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateFlightsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('flights', function (Blueprint $table) {
            $table-&gt;id();
            $table-&gt;string('name')-&gt;nuallable();
            $table-&gt;string('detail')-&gt;nuallable();
            $table-&gt;timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('flights');
    }
}</pre><p>หลังจากนั้น run คำสั่ง</p><pre class="crayon-plain-tag">php artisan migrate</pre><p>ให้คำสั่งไป excute โค๊ดให้สร้างตาราง หลังจาก run แล้วเราจะได้ผลลัพท์คือได้ตาราง flights มา<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-3236" src="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-41-50.jpg" alt="" width="578" height="178" srcset="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-41-50.jpg 578w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-41-50-300x92.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-41-50-80x25.jpg 80w" sizes="auto, (max-width: 578px) 100vw, 578px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3237" src="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-42-38.jpg" alt="" width="345" height="179" srcset="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-42-38.jpg 345w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-42-38-300x156.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-42-38-80x42.jpg 80w" sizes="auto, (max-width: 345px) 100vw, 345px" /></p>
<p>ต่อไปเราจะมาดู Model กันต่อว่ามีอะไรบ้าง</p>
<h3>Table Name</h3>
<p>เวลาเราสร้าง Model มานั้น Laravel จะ จดจำชื่อ Model กับ ชื่อตารางเป็นอันเดียวกันเช่น Model Flight ตารางในฐานข้อมูลเป็น flights แต่ที่นี้ถ้าชื่อตารางเป็นชื่ออื่นเช่น my_flights ละ ต้องทำแบบไหน วิธีการคือให้ใส่คำสั่ง <span style="color: #0000ff;">protected $table = &#8216;my_flights&#8217;;</span> ลงไปใน Model เดี่ยวมาดู โค๊ดแบบเต็มกัน</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'my_flights';
}</pre><p></p>
<h3>Primary Key</h3>
<p>โดย Model จะจดจำ Primary key ของตารางเป็น id หากเราใช้ชื่อ flight_id เป็น Primary key สามารถเปลี่ยนได้ โดยเขียนคำสั่ง <span style="color: #0000ff;">protected $primaryKey = &#8216;flight_id&#8217;;</span></p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
    /**
     * The primary key associated with the table.
     *
     * @var string
     */
    protected $primaryKey = 'flight_id';
}</pre><p></p>
<h3>Timestamps</h3>
<p>ค่าเริ่มต้นสำหรับ การบันทึกเวลาอัตโนมัติ ใน Model นั้นจะต้องมีคอลัมน์ created_at, updated_at แต่ในบางทีตารางเราไม่จำเป็นต้องมีการบันทึกเวลาไม่ต้องมี คอลัมน์เหล่านี้ ถ้าเราไม่ยกเลิกใช้งาน timestamps ใน Model เวลาเราบันทึกข้อมูล จะเกิด Error วิธีการแก้ไขนั้นให้เขียนคำสั่ง <span style="color: #0000ff;">public $timestamps = false;</span></p>
<p>และอีกทั้งคุณยังไม่จำเป็นต้องกำหนดคอลัมน์ให้เป็นชื่อ created_at, updated_at สามารถเปลี่ยนชื่อได้ โดยเขียนคำสั่ง&nbsp;<br />
<span style="color: #0000ff;">const CREATED_AT = &#8216;creation_date&#8217;;</span><br />
<span style="color: #0000ff;">const UPDATED_AT = &#8216;last_update&#8217;;</span></p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
    /**
     * Indicates if the model should be timestamped.
     *
     * @var bool
     */
    const CREATED_AT = 'creation_date';
    const UPDATED_AT = 'last_update';
    public $timestamps = false;
}</pre><p></p>
<h3>Retrieving Models</h3>
<p>เมื่อเราสร้าง Model และ ตารางในฐานข้อมูลแล้ว เราก็พร้อมสำหรับการดึงข้อมูลที่ต้องการจากฐานข้อมูล โดยใช้ Eloquent model ในการทำ Query builder กับ Model ลองมาดูตัวอย่างโดยเขียน ไว้ใน Controller</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Flight;

class WelcomeController extends Controller
{
    public function index()
    {
        $flights = Flight::all();

        foreach ($flights as $flight) {
            echo $flight-&gt;name;
        }
    }
}</pre><p>และถ้าหากเราต้องการให้ข้อมูลเรียกเอาเฉพาะ Active=1 และ เรียงข้อมูลคอลัมน์ name จาก มากไปน้อย และดึงมาแค่ 10 รายการ สามารถเขียนได้ดังนี้</p><pre class="crayon-plain-tag">$flights = Flight::where('active', 1)
               -&gt;orderBy('name', 'desc')
               -&gt;take(10)
               -&gt;get();</pre><p>ตรงนี้ เราสามารถดูคำสั่งในการ query builder ได้ที่ https://laravel.com/docs/7.x/queries</p>
<h3>สรุป</h3>
<p>สำหรับ บทความ พื้นฐาน Model มีเพียงเท่านี้ครับ และมีภาคต่อของ Model และเนื้อหาที่เกี่ยวข้องด้วย คือ การทำ Migration และการทำ Relation Model&nbsp;</p>
<p>สำหรับเนื้อหาส่วนนี้โดยรวมพูดถึงวิธีการสร้าง Model และภาพรวมว่า มีขั้นตอนการดึงข้อมูล การปรับแต่ง Model อะไรบ้าง รายละเอียดในบทความนี้หวังว่าจะเป็นแนวทางในการพัฒนาระบบของผู้อ่าน นะครับ</p><p>The post <a href="https://www.itoffside.com/laravel-ep11-model/">Laravel – EP11 การใช้งาน Model</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-ep11-model/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel &#8211; EP10 การใช้งาน Blade Template</title>
		<link>https://www.itoffside.com/laravel-ep10-blade-template/</link>
					<comments>https://www.itoffside.com/laravel-ep10-blade-template/#comments</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Thu, 09 Jan 2020 10:45:19 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[blade template]]></category>
		<category><![CDATA[PHP Framework]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2900</guid>

					<description><![CDATA[<p>ใน Laravel เวอร์ชั่น 5 เป็นต้นมาได้มีการนำเอา Blade Template มาใช้งานในส่วนของ view ซึ่ง Blade Template คือ Template Engine ที่เราสามารถเขียนโค๊ด php ผสมกับ html ได้อย่างเรียบง่าย แต่ผลลัพท์ที่ได้ทรงพลัง ซึ่งเราสามารถนำไปใช้กับ Frontend อย่าง vuejs, angularjs ได้อีกด้วย การใช้งานนั้นเราไม่จำเป็นต้อง...</p>
<p>The post <a href="https://www.itoffside.com/laravel-ep10-blade-template/">Laravel – EP10 การใช้งาน Blade Template</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>ใน Laravel เวอร์ชั่น 5 เป็นต้นมาได้มีการนำเอา <strong>Blade Template</strong> มาใช้งานในส่วนของ view ซึ่ง <strong>Blade Template</strong> คือ <span style="text-decoration: underline;">Template Engine</span> ที่เราสามารถเขียนโค๊ด php ผสมกับ html ได้อย่างเรียบง่าย แต่ผลลัพท์ที่ได้ทรงพลัง ซึ่งเราสามารถนำไปใช้กับ Frontend อย่าง vuejs, angularjs ได้อีกด้วย การใช้งานนั้นเราไม่จำเป็นต้องติดตั้งอะไรแล้วเพราะว่า<strong> blade template</strong> ถูกติดตั้งมาตั้งแต่ตอนที่เราติดตั้ง <strong>laravel</strong> แล้ว เพียงแค่เราทำการสร้างไฟล์ example.blade.php เราก็สามารถใช้ <strong>blade template</strong> ได้เลย<span id="more-2900"></span></p>
<h3>ขั้นตอนการสร้าง Blade Template Layout</h3>
<ol>
<li>เป็นขั้นตอนของการสร้าง Master Template เพื่อที่เราจะใช้ Master นี้ในทุกๆหน้า ดังนั้นเราต้องมี Layout template สำหรับเป็น Template หลักก่อน ให้ทำตามขั้นตอน<br />
1.) สร้างโฟล์เดอร์ layout ไว้ที่ resources/views (เราจะเอา <span style="text-decoration: underline;"><strong>blade template</strong></span> ไว้ใน โฟล์เดอร์นี้ด้วย)<br />
2.) หลังจากสร้างโฟล์เดอร์ layout แล้วให้ สร้างไฟล์ master.blade.php ไว้ในโฟล์เดอร์ layout ลองดู Code ด้านล่าง<br />
<pre class="crayon-plain-tag">&lt;html&gt;
   &lt;head&gt;
      &lt;title&gt;DemoLaravel - @yield('title')&lt;/title&gt;
      &lt;link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"&gt;
   &lt;/head&gt;
   &lt;body&gt;
      &lt;div class="container my-5"&gt;
        &lt;div class="row"&gt;
            &lt;div class="col-md-4"&gt;
                &lt;ul class="list-group"&gt;
                &lt;li class="list-group-item"&gt;&lt;a href="{{ url('home') }}"&gt;หน้าแรก&lt;/a&gt;&lt;/li&gt;
                    &lt;li class="list-group-item"&gt;&lt;a href="{{ url('about') }}"&gt;เกี่ยวกับเรา&lt;/a&gt;&lt;/li&gt;
                    &lt;li class="list-group-item"&gt;&lt;a href="{{ url('contact') }}"&gt;ติดต่อเรา&lt;/a&gt;&lt;/li&gt;
                  &lt;/ul&gt;
            &lt;/div&gt;
            &lt;div class="col-md-8"&gt;                
                &lt;div class="card"&gt;
                    &lt;div class="card-body"&gt;
                        @yield('content')
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
   &lt;/body&gt;
&lt;/html&gt;</pre><br />
จากตัวอย่าง code ให้เราสังเกตุว่าถ้าเรามี header, menu left, content ตรงกลาง แล้วเราอยากให้ header, menu left คงเดิมแต่ content ตรงกลางมีการเปลี่ยนแปลงตลอดเมื่อเปลียนเมนู เราจะใช้คำสั่ง @yield(&#8216;content&#8217;) และถ้าเราต้องการเปลี่ยน tag Title ทุกๆหน้าเวลาเปลียนเมนูเราก็ใช้คำสั่ง @yield(&#8216;title&#8217;)</li>
<li>ในขั้นตอนนี้เราสามารถใช้งาน layout Master template ที่สร้างจากขั้นตอนแรกได้แล้ว โดยเราเรียกว่าการ extends ซึ่งสิ่งที่เราได้กำหนดจาก layout Master คือมี title, content ที่เราจะเจาะ แล้วใส่เนื้อหาเข้าไป<br />
ให้เราไปสร้างไฟล์ home.blade.php, about.blade.php, contact.blade.php ไว้ใน resources/views จากนั้นให้ใส่ code ตัวอย่าง ทั้ง 3 ไฟล์ตามลำดับ<br />
<span style="text-decoration: underline;"><strong>home.blade.php</strong></span><br />
<pre class="crayon-plain-tag">@extends('master.app')

@section('title', 'Home Page')

@section('content')
    &lt;p&gt;This is Home content.&lt;/p&gt;
@endsection</pre><br />
<strong><span style="text-decoration: underline;">about.blade.php</span></strong><br />
<pre class="crayon-plain-tag">@extends('master.app')

@section('title', 'About Page')

@section('content')
    &lt;p&gt;This is Abount content.&lt;/p&gt;
@endsection</pre><br />
<strong><span style="text-decoration: underline;">contact.blade.php</span></strong><br />
<pre class="crayon-plain-tag">@extends('master.app')

@section('title', 'Contact Page')

@section('content')
    &lt;p&gt;This is Contact content.&lt;/p&gt;
@endsection</pre>
</li>
<li>สร้าง Controller ชื่อว่า PageController แล้วใส่ code ดังนี้<br />
<pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PageController extends Controller
{
    public function home()
    {
        return view('home');
    }

    public function about()
    {
        return view('about');
    }

    public function contact()
    {
        return view('contact');
    }
}</pre>
</li>
<li>กำหนด Route ที่ routes/web.php<br />
<pre class="crayon-plain-tag">&lt;?php
Route::get('/', 'PageController@home');
Route::get('home', 'PageController@home');
Route::get('about', 'PageController@about');
Route::get('contact', 'PageController@contact');</pre>
</li>
<li>จะเห็นผลลัพท์เวลาคลิกเมนู ก็จะเปลี่ยนไปตาม blade view</li>
</ol>
<h3>การนำตัวแปรมาแสดงผล</h3>
<p>ในบางทีเราอาจมีการส่งข้อมูลตัวแปรจาก Controller มาแสดงผลที่ View ซึ่งถ้าเป็น Framework อื่นใช้งานแบบนี้ &lt;?php echo $result[&#8216;document&#8217;]; ?&gt; เป็นต้น แต่ใน Blade Template Engine เราไม่จำเป็นต้องสร้าง Syntax ให้ยุ่งยากและวุ่นวายเราสามารถใช้ {{&nbsp; }} ในการนำตัวแปลมาแสดงผลได้เลย เช่น</p><pre class="crayon-plain-tag">Hello, {{ $name }}.</pre><p>หรือกรณีถ้าเราต้องการใช้ Function PHP เราก็สามารถเรียกใช้งานได้ทันที เช่น</p><pre class="crayon-plain-tag">Hello current time, {{ date('d/m/Y H:i') }}.</pre><p></p>
<h3>การควบคุมเงื่อนไขหรือวนลูป(IF, FOREACH)</h3>
<p>ในบางทีเราอาจมีการตรวจสอบการแสดงผล ต้องใช้เงื่อนไขบางอย่าง ก็สามารถทำได้เพียงคำสั่ง @if ลองดูตัวอย่างการใช้งาน</p><pre class="crayon-plain-tag">if (count($records) === 1)
    I have one record!
@elseif (count($records) &gt; 1)
    I have multiple records!
@else
    I don't have any records!
@endif</pre><p>ถ้าหากเราต้องการวนข้อมูล สามารถใช้ @for, @foreach ได้ตามตัวอย่าง code ด้านล่าง</p><pre class="crayon-plain-tag">@for ($i = 0; $i &lt; 10; $i++)
    The current value is {{ $i }}
@endfor

@foreach ($users as $user)
    &lt;p&gt;This is user {{ $user-&gt;id }}&lt;/p&gt;
@endforeach</pre><p></p>
<h3>Comment Code</h3>
<p>สามารถ Comment code ใน Blade template ได้โดยใช้</p><pre class="crayon-plain-tag">{{-- This comment will not be present in the rendered HTML --}}</pre><p></p>
<h3>สรุป</h3>
<p>Blade Template เป็น<strong> Template Engine</strong> ของ <strong>Laravel</strong> เราสามารถใช้งานได้เลยไม่จำเป็นต้องติดตั้งเพิ่ม ใช้ง่าย เข้าใจง่าย และทำให้การเขียนโปรแกรม Clean code ขึ้น ผู้เขียนจึงแนะนำให้ใช้<strong> Blade Template</strong> เลย ซึ่งบทความทางผู้เขียน เขียนขึ้นมาน่าจะเป็นแนวทางให้ใครหลายคนสามารถนำไปประยุกต์ปฏิบัต ได้ไม่มากก็น้อย</p>
<p>สำหรับบทความ Blade Template ก็มีเพียงเท่านี้หากมีข้อคำถามใดๆ เพิ่มเติม พิมพ์ comment แจ้งมาได้เลยครับ</p><p>The post <a href="https://www.itoffside.com/laravel-ep10-blade-template/">Laravel – EP10 การใช้งาน Blade Template</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-ep10-blade-template/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel &#8211; EP9 การใช้ View</title>
		<link>https://www.itoffside.com/laravel-ep9-view/</link>
					<comments>https://www.itoffside.com/laravel-ep9-view/#comments</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Thu, 05 Dec 2019 00:36:34 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Laravel View]]></category>
		<category><![CDATA[PHP Framework]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2896</guid>

					<description><![CDATA[<p>Laravel: View เป็นส่วนหนึ่งของคอนเซป MVC ซึ่งหมายถึงการแสดงผลบนหน้าแอพลิเคชั่น ซึ่ง View ของ Laravel นี้อยู่ใน โฟล์เดอร์ resources/views ซึ่ง view ภาษาส่วนใหญ่จะใช้ภาษา HTML ตัวอย่างการใช้งาน ลองสร้าง view โดยไปสร้างไฟล์ test.php ไว้ที่ resources/views/test.php [crayon-6a35987d201b6132218440/] 2 .ไป...</p>
<p>The post <a href="https://www.itoffside.com/laravel-ep9-view/">Laravel – EP9 การใช้ View</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>Laravel: View</strong> เป็นส่วนหนึ่งของ<span style="text-decoration: underline;">คอนเซป MVC</span> ซึ่งหมายถึงการแสดงผลบนหน้าแอพลิเคชั่น ซึ่ง <strong>View</strong> ของ <strong>Laravel</strong> นี้อยู่ใน โฟล์เดอร์ resources/views ซึ่ง view ภาษาส่วนใหญ่จะใช้ภาษา <strong>HTML</strong></p>
<p><span id="more-2896"></span></p>
<h3>ตัวอย่างการใช้งาน</h3>
<ol>
<li>ลองสร้าง <strong>view</strong> โดยไปสร้างไฟล์ test.php ไว้ที่ <span style="color: #000080;">resources/views/test.php</span></li>
</ol>
<p></p><pre class="crayon-plain-tag">&lt;html&gt;
   &lt;body&gt;
      &lt;h1&gt;Hello, World&lt;/h1&gt;
   &lt;/body&gt;
&lt;/html&gt;</pre><p>2 .ไปเพิ่มโค็ดใน <strong>Route</strong> กำหนดเส้นทางให้ render <strong>view</strong> ที่เราเพิ่งสร้างจากข้อ 1<br />
เข้าไปที่ไฟล์ <span style="color: #000080;">routes/web.php</span> เพื่อกำหนดเส้นทาง</p><pre class="crayon-plain-tag">Route::get('/test', function() {
   return view('test');
});</pre><p>3. ทดลอง เข้าลิงค์ <span style="color: #000080;">http://localhost:8000/test</span> แล้วจะเห็นว่า มีการแสดงผล <strong>view</strong> ตามที่เราต้องการ</p>
<p>สำหรับที่เก็บไฟล์ <strong>view</strong> จะถูกเก็บไว้ที่โฟล์เดอร์ <span style="color: #000080;">resources/views</span></p>
<h3>การส่ง Data ไปยัง View</h3>
<p>ในการสร้าง ระบบแอพลิเคชั่น เราจำเป็นต้องส่งข้อมูลไปยัง <strong>view</strong> เพื่อนำข้อมูลเหล่านั้นไปแสดงผลให้กับผู้ใช้ โดย Data ที่ส่งไปใน Laravel จะใช้ข้อมูลรูปแบบ Array ในการส่ง</p>
<p>ตัวอย่างการส่ง Data ไปยัง <strong>View</strong><br />
1. สร้างไฟล์ <strong>view</strong> ที่<span style="color: #000080;"> resources/views/test.php</span> และเพิ่มโค็ดลงไป</p><pre class="crayon-plain-tag">&lt;html&gt;
   &lt;body&gt;
      &lt;h1&gt;&lt;?php echo $name; ?&gt;&lt;/h1&gt;
   &lt;/body&gt;
&lt;/html&gt;</pre><p>2. ไปเพิ่มโค็ดใน <strong>Route</strong> กำหนดเส้นทาง ที่ไฟล์ <span style="color: #000080;">routes/web.php</span></p><pre class="crayon-plain-tag">Route::get('/test', function() {
   return view('test',['name' =&gt; 'ITOFFSIDE.com']);
});</pre><p>จากโค็ดอธิบายได้คือ <strong>view</strong> จะ render ไฟล์ที่ชื่อว่า test.php และ ส่งข้อมูล Array โดยไฟล์ view จะนำ ข้อมูลไปแสดงโดยเอา Key array ไปอ้างอิง ซึ่งในตัวอย่าง key คือ name ดังนั้น view จะแสดงค่า เป็น ITOFFSIDE.com</p>
<p>3. ทดลองเข้าลิงค์ <span style="color: #000080;">http://localhost:8000/test</span> แล้วจะเห็นว่า มีการแสดงผล <strong>view</strong> ตามที่เราส่งค่ามานั้นเอง</p>
<p>สำหรับบทความเกี่ยวกับ <span style="text-decoration: underline;"><strong>Laravel View</strong></span> ก็มีเพียงเท่านี้ ทางผู้เขียนคิดว่า ผู้อ่านและผู้ที่สนใจศึกษาการเขียน <strong>Framework Laravel</strong> น่าจะเข้าใจไม่มากก็น้อย สำหรับใครที่ไม่เข้าใจส่วนใดสามารถสอบถามได้ และในบทความถัดไปจะเขียนในเรื่องการใช้ Blade Template ซึ่ง <strong>View</strong> นั้นมีส่วนเกี่ยวข้องกับ <strong>Blade Template</strong> นั้นเอง</p><p>The post <a href="https://www.itoffside.com/laravel-ep9-view/">Laravel – EP9 การใช้ View</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-ep9-view/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel &#8211; EP8 Response (การส่งค่าตอบกลับไปยังผู้ใช้)</title>
		<link>https://www.itoffside.com/laravel-ep8-response/</link>
					<comments>https://www.itoffside.com/laravel-ep8-response/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Fri, 08 Nov 2019 17:00:20 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PHP Framework]]></category>
		<category><![CDATA[php7]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2894</guid>

					<description><![CDATA[<p>ในการทำเว็บไซต์หรือระบบเว็บแอพลิเคชั่น ผู้ใช้มีการ Request (ร้องขอ) ข้อมูลไปยัง Server (Laravel) ดังนั้นแล้ว ตัว Server (Laravel) ก็จะต้องมีการ Response (ตอบกลับ) ผลลัพท์ไปหาผู้ใช้งาน ดังนั้นบทความนี้จะอธิบายรายละเอียดและวิธีการในการเขียนโปรแกรมการตอบกลับใน Laravel กันครับ เริ่มต้น Laravel มีหลายวิธ...</p>
<p>The post <a href="https://www.itoffside.com/laravel-ep8-response/">Laravel – EP8 Response (การส่งค่าตอบกลับไปยังผู้ใช้)</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>ในการทำเว็บไซต์หรือระบบเว็บแอพลิเคชั่น ผู้ใช้มีการ Request (ร้องขอ) ข้อมูลไปยัง Server (Laravel) ดังนั้นแล้ว ตัว Server (Laravel) ก็จะต้องมีการ Response (ตอบกลับ) ผลลัพท์ไปหาผู้ใช้งาน ดังนั้นบทความนี้จะอธิบายรายละเอียดและวิธีการในการเขียนโปรแกรมการตอบกลับใน Laravel กันครับ<span id="more-2894"></span></p>
<h3>เริ่มต้น</h3>
<p><strong>Laravel</strong> มีหลายวิธีการในการ Response โดยเราจะไปเขียน Response ที่ Controller เดี่ยวลองดูการทำ Response แบบง่ายๆก่อนด้วยการส่งข้อความ &#8220;Hello world&#8221;</p>
<h6>ตัวอย่าง</h6>
<p>ให้เราไปสร้าง Controller ในตัวอย่าง ชื่อ BaseController.php แล้วเขียนคำสั่ง code ลงไป</p><pre class="crayon-plain-tag">public function demo()
{
  return 'Hellow world';
}</pre><p>หากเราต้องการ response เป็นค่า Array สามารถทำได้ดังนี้</p><pre class="crayon-plain-tag">public function demo()
{
  return ['apple', 'mango', 'lemon'];
}</pre><p></p>
<h3>การแนบข้อมูล Header Response</h3>
<p>เราสามารถแนบข้อมูลไปไว้ใน Header แล้ว response กลับไปยังผู้ใช้ได้โดยวิธีการมีดังนี้</p><pre class="crayon-plain-tag">public function demo()
{
        return response('Hello world', 200)
            -&gt;header('Content-Type', 'text/plain')
            -&gt;header('X-Header-One', 'Header Value 1');
}</pre><p>ผลลัพท์ก็ได้ พร้อมกับ Header<br />
<img loading="lazy" decoding="async" class="alignnone wp-image-3163 size-full" src="https://www.itoffside.com/wp-content/uploads/2018/11/Capture.jpg" alt="" width="398" height="228" srcset="https://www.itoffside.com/wp-content/uploads/2018/11/Capture.jpg 398w, https://www.itoffside.com/wp-content/uploads/2018/11/Capture-300x172.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/11/Capture-80x46.jpg 80w" sizes="auto, (max-width: 398px) 100vw, 398px" /></p>
<h3>JSON Response</h3>
<p>การ Response แบบ JSON เป็นที่นิยมอย่างมากเนื่องจากว่า มาตราฐาน API นิยมใช้ syntax JSON โดยเราจะใช้ method <strong>json()</strong>&nbsp;จากนั้นข้อมูลที่เราต้องการจะส่งจะถูกแปลงให้อยู่ในรูปแบบ JSON เองอัตโนมัติ ลองมาดูตัวอย่างกันครับ</p><pre class="crayon-plain-tag">public function demo()
{
    return response()-&gt;json([
        'name' =&gt; 'Tawatsak',
        'sex' =&gt; 'Male',
        'country' =&gt; 'Thailand'
    ]);
}</pre><p>ผลลัพท์ที่ได้<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-3164" src="https://www.itoffside.com/wp-content/uploads/2018/11/Capture-1.jpg" alt="" width="344" height="141" srcset="https://www.itoffside.com/wp-content/uploads/2018/11/Capture-1.jpg 344w, https://www.itoffside.com/wp-content/uploads/2018/11/Capture-1-300x123.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/11/Capture-1-80x33.jpg 80w" sizes="auto, (max-width: 344px) 100vw, 344px" /><br />
โดย method json() นี้จะแปลง Header Content-Tyype=application/json ให้เราอัตโนมัติ เราไม่ต้องไปทำอะไร</p>
<h3>View Redirect</h3>
<p>หากเราต้องการ Redirect ก็สามารถทำได้โดยใช้คำสั่งนี้</p><pre class="crayon-plain-tag">public function demo()
{
    return redirect('home/dashboard');
}</pre><p>โดยเส้นทางที่จะไปคือ domain.com/home/dashboard</p>
<p>หากต้องการ Redirect ไปลิงค์ด้านนอกก็ทำได้โดยใช้คำสั่งนี้</p><pre class="crayon-plain-tag">public function demo()
{
    return redirect()-&gt;away('https://www.itoffside.com');
}</pre><p>สำหรับบทความนี้ก็จบเพียงเท่านี้ หากใครมีข้อสงสัยต้องการสอบถามเพิ่มเติม สามารถแสดงความคิดเห็น(Comment) ไว้ด้านล่างนี้เลยนะครับ</p><p>The post <a href="https://www.itoffside.com/laravel-ep8-response/">Laravel – EP8 Response (การส่งค่าตอบกลับไปยังผู้ใช้)</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-ep8-response/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel &#8211; EP7 การเรียกใช้ Request</title>
		<link>https://www.itoffside.com/laravel-ep7-request/</link>
					<comments>https://www.itoffside.com/laravel-ep7-request/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Wed, 25 Sep 2019 14:47:27 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Framework]]></category>
		<category><![CDATA[php7]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2892</guid>

					<description><![CDATA[<p>Request ของ Laravel คือ HTTP Request ที่รับข้อมูลจาก Client มาเพื่อส่งไปให้กับตัว SERVER ตัวอย่างเช่นผู้ใช้ทำการกรอกข้อมูลสมาชิกผ่านฟอร์ม แล้วกด Submit ตอนกด Submit แล้วข้อมูลพวกนี้จะเรียกว่า Request&#160; นั้นเอง แล้วข้อมูล Request เหล่านี้จะถูกส่งมาที่ Controller สำหรับบทความเนื้อหานี้จะมาแนะนำการ...</p>
<p>The post <a href="https://www.itoffside.com/laravel-ep7-request/">Laravel – EP7 การเรียกใช้ Request</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>Request ของ Laravel</strong> คือ HTTP Request ที่รับข้อมูลจาก Client มาเพื่อส่งไปให้กับตัว SERVER ตัวอย่างเช่นผู้ใช้ทำการกรอกข้อมูลสมาชิกผ่านฟอร์ม แล้วกด Submit ตอนกด Submit แล้วข้อมูลพวกนี้จะเรียกว่า Request&nbsp; นั้นเอง แล้วข้อมูล Request เหล่านี้จะถูกส่งมาที่ Controller สำหรับบทความเนื้อหานี้จะมาแนะนำการใช้งาน และอธิบายให้ผู้อ่านได้เข้าใจง่ายๆและเห็นภาพชัดเจน</p>
<p><span id="more-2892"></span></p>
<h3>การนำมาใช้งาน</h3>
<p>จากการที่ยกตัวอย่างคือเมื่อเรา กรอกข้อมูลฟอร์มสมาชิกแล้วกด submit แล้ว เราต้องการส่งข้อมูลไปยัง <strong>controller</strong> ที่มี Method ชื่อว่า <span style="color: #0000ff;">store()</span> เราจะเขียนโค๊ดตามตัวอย่างด้านล่างนี้</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    public function store(Request $request)
    {
        $name = $request-&gt;input('name');
        $age = $request-&gt;input('age');
    }
}</pre><p>จากตัวอย่างโค๊ดด้านบน นั้น เรามีการส่งค่า <span style="color: #0000ff;">name, age</span> จากฟอร์มสมาชิก มาที่ controller &gt; method store การรับค่าให้เราใช้ dependency injection ที่ชื่อว่า Request</p>
<p>และ Request เราต้องเรียกใช้ก่อน โดยใช้คำสั่ง <span style="color: #0000ff;">use Illuminate\Http\Request</span></p>
<h3>การใช้งาน Request พร้อมกับ parameter</h3>
<p>หากเราต้องการส่งค่า Request และ Parameter ไปที่ Controller มาพร้อมกัน เราต้องใส่ Request ไปก่อนแล้วถึงใส่ Parameter ตามไป ลองดูโค๊ดตัวอย่างด้านล่าง</p>
<p>กำหนดเส้นทาง <span style="color: #0000ff;">routes/web.php</span></p><pre class="crayon-plain-tag">Route::put('user/{id}', 'UserController@update');</pre><p>เขียนโค๊ดใน controller ตามด้านล่างนี้</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    public function update(Request $request, $id)
    {
        $name = $request-&gt;input('name');
        $age = $request-&gt;input('age');
        // get id use $id
    }
}</pre><p></p>
<h3>การใช้ Request รับข้อมูลแบบ Dynamic</h3>
<p>เราสามารถรับข้อมูลแบบ Dynamic ได้เช่น ปกติเรารับข้อมูลจากฟอร์มเราใช้ <span style="color: #0000ff;">$request-&gt;input(&#8216;name&#8217;)</span> แต่เราสามารถรับแบบ <span style="color: #0000ff;">$request-&gt;name</span> ก็ได้</p>
<h3>การใช้ Request รับข้อมูลแบบ Old Input</h3>
<p>ในบางครั้งเรากด submit แล้วข้อมูลที่ส่งไปให้กับ server ตรวจสอบแล้วมีข้อมูลซ้ำ หรือไม่ผ่านการตรวจสอบจาก server เราจะให้กลับไปกรอกใหม่ ดังนั้นเมื่อกลับไปกรอกข้อมูลใหม่ กลับพบว่าข้อมูลฟอร์มที่เรากรอกๆ ไปนั้นได้หายไป ดังนั้น <strong>laravel</strong> มีคำสั่ง old input ให้ใช้ โดยตอนที่เรากด submit ไปที่ Controller ให้เราใช้โค๊ด</p><pre class="crayon-plain-tag">$request-&gt;flash();</pre><p>&nbsp;เพื่อเก็บค่าตัวแปรไว้ชั่วคราว และเมื่อเกิด error มีการกลับไปหน้าฟอร์มเดิม ให้เรานำ old input มาใช้โดยใช้คำสั่งจากตัวอย่างด้านล่าง แบบนี้ใน blade view</p><pre class="crayon-plain-tag">&lt;input name="name" value="{{ old('name') }}"/&gt;
&lt;input name="age" value="{{ old('age') }}"/&gt;</pre><p>กรณีเราไม่ต้องการเก็บตัวแปรไว้ เราสามารถยกเว้นได้ โดยเราเขียนคำสั่งใน Laravel Controller แบบนี้</p><pre class="crayon-plain-tag">$request-&gt;flashExcept('password');</pre><p>หรือหากต้องการเก็บตัวแปรชั่วคราวบางตัวแปร สามารถเขียนคำสั่งใน Laravel Controller แบบนี้</p><pre class="crayon-plain-tag">$request-&gt;flashOnly(['username', 'email']);</pre><p></p>
<h3>สรุป</h3>
<p>สำหรับบทความนี้ก็จบการนำเสนอในเรื่องของการรับข้อมูลจากฟอร์ม เพื่อส่งมาที่ <strong>Controller</strong> ว่าทำอย่างไรรับอย่างไร หากมีข้อสงสัย เพิ่มเติมสามารถเขียนคอมเม้นมาสอบถามได้ และทางผู้เขียนหวังว่าบทความนี้จะเป็นประโยชน์กับหลายๆคนที่เริ่มศึกษา <strong>laravel</strong> ไม่มากก็น้อย อย่างไรก็อย่าลืมติดตามบทความสอน <strong>laravel</strong> ในเว็บ itoffside.com ด้วยนะครับ ขอบคุณครับ</p><p>The post <a href="https://www.itoffside.com/laravel-ep7-request/">Laravel – EP7 การเรียกใช้ Request</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-ep7-request/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel &#8211; EP6 การใช้งาน Controller</title>
		<link>https://www.itoffside.com/laravel-5-controller/</link>
					<comments>https://www.itoffside.com/laravel-5-controller/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Mon, 01 Jul 2019 17:00:01 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Laravel 5]]></category>
		<category><![CDATA[PHP Framework]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2890</guid>

					<description><![CDATA[<p>Controller คือหนึ่งในคอนเซปต์ ของ MVC ซึ่งมาจากตัวอักษรย่อ &#8220;C&#8221; นั้นเอง ซึ่งหน้าที่ของมันคือเป็นส่วนจัดการการ การทำงานของระบบ&#160; ซึ่งจะอยู่ระหว่างกลาง ของ Model และ View สำหรับบทความนี้เรามาเรียนรู้เกี่ยวกับdการสร้าง Controller, Middleware controller, resource controller ใน Laravel กัน...</p>
<p>The post <a href="https://www.itoffside.com/laravel-5-controller/">Laravel – EP6 การใช้งาน Controller</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>Controller</strong> คือหนึ่งในคอนเซปต์ ของ <strong>MVC</strong> ซึ่งมาจากตัวอักษรย่อ &#8220;C&#8221; นั้นเอง ซึ่งหน้าที่ของมันคือเป็นส่วนจัดการการ การทำงานของระบบ&nbsp; ซึ่งจะอยู่ระหว่างกลาง ของ Model และ View สำหรับบทความนี้เรามาเรียนรู้เกี่ยวกับdการสร้าง Controller, Middleware controller, resource controller ใน Laravel กันครับ<span id="more-2890"></span></p>
<h3>การสร้าง Controller</h3>
<p>ให้เปิด Command line แล้วพิมพ์คำสั่ง Artisan CLI ตามด้านล่างนี้ครับ</p><pre class="crayon-plain-tag">php artisan make:controller BlogController</pre><p>Laravel จำทำการสร้างไฟล์ Controller มาให้เราเองซึ่งไฟล์จะอยู่ที่ app\Http\Controllers หลังจากนั้นเราเปิดไฟล์ BlogController.php แล้วเราจะเห็นตัวอย่างโค๊ดที่เขียนมาให้แล้ว</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class BlogController extends Controller
{
    //
}</pre><p>โดยไฟล์จะถูกสร้างไว้ที่ App/Http/Controllers แต่ถ้าเราไม่ต้องการให้มันสร้างผ่าน Artisan command เราสามารถ Create new file เองก็ได้เช่นกันครับ ไม่มีปัญหา</p>
<p>จากนั้นให้ใส่ ฟังก์ชั่น test() ลงไป จะได้เป็น</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class BlogController extends Controller
{
    public function test()
    {
        echo 'Hello world!';
    }
}</pre><p>จากนั้นเราต้องไปกำหนดเส้นทางให้ชี้มาที่ Controller และ ฟังก์ชั่น test() ที่เราสร้าง โดยไปกำหนดที่ routes/web.php</p><pre class="crayon-plain-tag">&lt;?php
Route::get('blog/test', 'BlogController@test');</pre><p>ลองทดสอบ ดูบน Chrome จะได้ผลลัพธ์ ตามรูปภาพด้านล่าง</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3135" src="https://www.itoffside.com/wp-content/uploads/2018/11/controller-01.jpg" alt="" width="384" height="105" srcset="https://www.itoffside.com/wp-content/uploads/2018/11/controller-01.jpg 384w, https://www.itoffside.com/wp-content/uploads/2018/11/controller-01-300x82.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/11/controller-01-80x22.jpg 80w" sizes="auto, (max-width: 384px) 100vw, 384px" /></p>
<p>จบแล้วการใช้งาน controller ง่ายไหมครับ สำหรับการใช้งาน Controller ใน Laravel</p>
<h3>Middleware In Controller</h3>
<p>เพิ่มเติมส่วนของการใช้งาน auth midleware ใน Controller ครับ โดยเราสามารถใช้ middleware ได้โดยนำโค๊ดไปใส่ที่ __construct() ลองดูตัวอย่างโค๊ดด้านล่างนี้ครับ</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Controllers;

class BlogController extends Controller
{
    public function __construct()
    {
        $this-&gt;middleware('auth');
    }

    public function test()
    {
        echo 'Hello world!';
    }
}</pre><p>จากตัวอย่างโค๊ดจะสังเกตุเห็นว่า ตอนที่ controller เราจะให้มีการตรวจสอบสิทธิ์ ทุกครั้งก่อนเสมอ</p>
<h3>Resource Controllers</h3>
<p>เป็นการเขียน <strong>Controller</strong> ที่มี <strong>CRUD (Create, Read, Update, Delete)</strong> ครบครัน ด้วยการเขียน <span style="color: #0000ff;">routes/web.php</span> เพียงบรรทัดเดียว เท่านั้น อยากให้นึกภาพให้เห็น การที่ Controller เรามีหลายๆ ฟังก์ชั่น เช่น index(), Create(), Show() เราจำเป็นต้องเขียน Routes หลายบรรทัด เช่น</p><pre class="crayon-plain-tag">Route::get('index', 'BlogController@index');
Route::get('create', 'BlogController@Create');
Route::get('show', 'BlogController@Show');</pre><p>แล้วถ้าใน <strong>controller</strong> มีมากกว่านี้ เราจะทำอย่างไร ดังนั้น <strong>Resource Controller</strong> จะมาช่วยทำ โดยเราเขียน โค๊ดใน Route เพียงการโค๊ด</p><pre class="crayon-plain-tag">Route::resources([
    'blog' =&gt; 'BlogController',    
]);</pre><p>สิ่งที่เราได้จากโค๊ดนี้ เปรียบเสมือนเราเขียน Route แบบนี้ครับ</p>
<div>
<div><span style="color: #0000ff;">Route::get(&#8216;/blog&#8217;, &#8216;BlogController@index&#8217;);</span></div>
<div><span style="color: #0000ff;">Route::get(&#8216;/blog/create&#8217;, &#8216;BlogController@create&#8217;);</span></div>
<div><span style="color: #0000ff;">Route::get(&#8216;/blog/{id}&#8217;, &#8216;BlogController@show&#8217;);</span></div>
<div><span style="color: #0000ff;">Route::get(&#8216;/blog/{id}/edit&#8217;, &#8216;BlogController@edit&#8217;);</span></div>
<div><span style="color: #0000ff;">Route::post(&#8216;/blog&#8217;, &#8216;BlogController@store&#8217;);</span></div>
<div><span style="color: #0000ff;">Route::put(&#8216;/blog/{id}&#8217;, &#8216;BlogController@update&#8217;);</span></div>
<div><span style="color: #0000ff;">Route::delete(&#8216;/blog/{id}&#8217;, &#8216;BlogController@destroy&#8217;);</span></div>
</div>
<div>&nbsp;</div>
<div>คือ Resources จะเตรียมโค๊ดแบบ CRUD มาให้เราเลย ส่วนใน Controller วิธีการสร้างแบบ Resource ให้ generate โค๊ดเอง ทำได้เพียงใช้คำสั่ง</div>
<div>
<pre class="crayon-plain-tag">php artisan make:controller BlogController --resource</pre><br />
<strong>Artisan command</strong> ก็จะ generate ไฟล์พร้อมโค๊ด ที่มีฟังก์ชั่น index(), create(), show($id), edit($id), store($reqeuset), update($reqeust, $id), destroy($id) มาให้เราโดยไม่ต้องพิมพ์ใดๆเลย</p>
<h5><strong>ส่วนความหมายแต่ละฟังก์ชั่นมีดังนี้</strong></h5>
<table>
<thead>
<tr>
<th>Verb</th>
<th>URI</th>
<th>Action</th>
<th>Route Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>GET</td>
<td><code class=" language-php"><span class="token operator">/blog</span></code></td>
<td>index</td>
<td>blog.index</td>
<td>หน้าแรก</td>
</tr>
<tr>
<td>GET</td>
<td><code class=" language-php"><span class="token operator">/blog<span class="token operator">/</span>create</span></code></td>
<td>create</td>
<td>blog.create</td>
<td>หน้า Create</td>
</tr>
<tr>
<td>POST</td>
<td><code class=" language-php"><span class="token operator">/blog</span></code></td>
<td>store</td>
<td>blog.store</td>
<td>ฟังก์ชั่นการ Insert ข้อมูล</td>
</tr>
<tr>
<td>GET</td>
<td><code class=" language-php"><span class="token operator">/blog<span class="token operator">/<span class="token punctuation">{</span>id<span class="token punctuation">}</span></span></span></code></td>
<td>show</td>
<td>blog.show</td>
<td>หน้าแสดงข้อมูลตาม ID</td>
</tr>
<tr>
<td>GET</td>
<td><code class=" language-php"><span class="token operator">/blog<span class="token operator">/<span class="token punctuation">{</span>id<span class="token punctuation">}<span class="token operator">/</span>edit</span></span></span></code></td>
<td>edit</td>
<td>blog.edit</td>
<td>หน้าแก้ไขข้อมูล</td>
</tr>
<tr>
<td>PUT/PATCH</td>
<td><code class=" language-php"><span class="token operator">/blog<span class="token operator">/<span class="token punctuation">{</span>id<span class="token punctuation">}</span></span></span></code></td>
<td>update</td>
<td>blog.update</td>
<td>ฟังก์ชั่นการ Update ข้อมูล</td>
</tr>
<tr>
<td>DELETE</td>
<td><code class=" language-php"><span class="token operator">/blog<span class="token operator">/<span class="token punctuation">{</span>id<span class="token punctuation">}</span></span></span></code></td>
<td>destroy</td>
<td>blog.destroy</td>
<td>ฟังก์ชั่นการ Delete ข้อมูล</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p>สำหรับบทความนี้ก็จบเพียงเท่านี้หากมีปัญหาหรือคำถามใดๆ สามารถสอบถามได้ทาง comment ด้านล่างนี้เลยครับ</p><p>The post <a href="https://www.itoffside.com/laravel-5-controller/">Laravel – EP6 การใช้งาน Controller</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-5-controller/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
