Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > บทความจากสมาชิก > Laravel::Schema การจัดการตารางของ Laravel ด้วย Schema Builder



 
Clound SSD Virtual Server

Laravel::Schema การจัดการตารางของ Laravel ด้วย Schema Builder

Laravel:: การจัดการตารางของ Laravel ด้วย Schema Builder เรามาจัดการตารางในฐานข้อมูล ด้วย สกีมา บิ้วเด้อกันครับ

SCHEMA BUILDER( การจัดการตาราง )

Schema Builder คือ ฟังก์ชันที่ Laravel ใช้จัดการตาราง ไม่ว่าจะเป็นลบอ่านเขียน กำหนดค่าของตารางครับ
เพื่อนๆหลายท่านคงเคยใช้ cms หลายๆตัว ที่ตอนเริ่มแรกเขาให้เราตั้งค่า ฐานข้อมูล ตอนสุดท้ายก็จะโหลดนานหน่อย
แต่การโหลดตอนสุดท้ายนี้แหละครับ คือการสร้างฐานข้อมูลขึ้นมา ถ้าอ่านบทความนี้จบแล้วเพื่อนก็สามารถนำฟังก์ชันเหล่านี้ไปสร้างตัวติดตั้งส่วนตัวใช้ได้เลย

Creating & Dropping Tables(สร้างและลบตาราง) ตัวอย่างการสร้างตารางครับ:

Code (PHP)
Schema::create('users', function($table)
{
    $table->increments('id');
});

ในตัวอย่างเราสร้างตาราง user โดยกำหนดให้คอลัมน์ id เป็น auto increments

ตัวอย่างการลบ:

Code (PHP)
Schema::drop('users');


ลบแบบ remote ไปที่อื่น:

Code (PHP)
Schema::drop('users', 'connection_name');


ตัวอย่างการเชื่อมต่อฐานข้อมูลอื่นๆที่ไม่ได้อยู่บนเครื่องเราครับ.

Code (PHP)
Schema::create('users', function($table)
{
    $table->on('connection');
});



Adding Columns( เพิ่มคอลัมน์ ) ตัวอย่างการเพิ่มคอลัมน์ โดยไม่ต้องห่วงเรื่องชนิดของฐานข้อมูลเลยครับ

Code (PHP)
$table->increments('id');
ตั้ง auto increment ให้ id
$table->string('email');
ให้คอลัม email เป็น  varchar
$table->string('name', 100);
ให้คอลัม name เป็น  varchar มีความยาว 100
$table->integer('votes');
ให้คอลัม votes เป็น  integer
$table->float('amount');
ให้คอลัม amount เป็น  float
$table->decimal('amount', 5, 2);
ให้คอลัม amount เป็น  decimal ที่มีค่าระหว่าง 5 กับ 2
$table->boolean('confirmed');
ให้คอลัม confirmed เป็น  boolean
$table->date('created_at');
ให้คอลัม created_at เป็น  date
$table->timestamp('added_on');
ให้คอลัม added_on เป็น  timestamp
$table->timestamps();
ให้คอลัมน์ created_at กับ updated_at สร้างข้อมูลอัตโนมัติเวลามีการเพิ่มหรือแก้ไขข้อมูล
$table->text('description');
ให้คอลัม description เป็น  text
$table->blob('data');
ให้คอลัม data เป็น  blob
->nullable()
ให้คอลัม สามารถเป็นค่าว่างได้
->default($value)
กำหนดค่าเริ่มต้นให้คอลัมน์
->unsigned()
กำหนดให้ interger กลายเป็น unsign

Note: Laravel's "boolean" เวลาสร้างคอลัมน์จะมีชนิดเป็น tiny int

ตัวอย่างการใช้งานจริง

Code (PHP)
Schema::table('users', function($table)
{
    $table->create();
    $table->increments('id');
    $table->string('username');
    $table->string('email');
    $table->string('phone')->nullable();
    $table->text('about');
    $table->timestamps();
});


Dropping Columns( ลบคอลัมน์ ) ตัวอย่างหารลบคอลัน์:

Code (PHP)
$table->drop_column('name');


ตัวอย่างการลบหลายๆคอลัมน์:

Code (PHP)
$table->drop_column(array('name', 'email'));



Adding Indexes ( สร้าง indexes )

Schema builder สนับสนุนการสร้าง index หลายๆชนิดครับ แต่ละ index ก็คือ method ของ schema:
ตัวอย่างการสร้าง index กำหนดให้เป็น unique ให้คอลัมน์ email :

Code (PHP)
$table->string('email')->unique();// การเพิ่ม index ลงในแถวเดียวเลย


ข้างล่างเป็นการสร้าง index ในแบบแยกแถวครับ

คำสั่ง คำอธิบาย

Code (PHP)
$table->primary('id');


เพิ่มคีย์หลัก

Code (PHP)
$table->primary(array('fname', 'lname'));


เพิ่ม primary key แบบ หลายๆตัว

Code (PHP)
$table->unique('email');


ให้คอลัมน์ emailไม่มีการซ้ำ

Code (PHP)
$table->fulltext('description');


ให้คอลัมน์ description มี index เป็น fulltext

Code (PHP)
$table->index('state');


การสร้าง index แบบเบสิค

Code (PHP)
Dropping Indexes ( การลบ indexes)


การลบ index เราต้องกำหนด ตาราง คอลัมน์ ชนิด ของ index เข้าไปด้วยเหมือนในตัวอย่างครับ:

Code (PHP)
$table->drop_primary('users_id_primary');
$table->drop_unique('users_email_unique');
$table->drop_fulltext('profile_description_fulltext');
$table->drop_index('geo_state_index');



Foreign Keys ( การเพิ่มคีย์เชื่อม ) ตัวอย่างการสร้างคีย์เชื่อม:

Code (PHP)
$table->foreign('user_id')->references('id')->on('users');


จะกำหนดการตอบโต้เวลาโดนแก้ไขหรือลบได้ด้วย ครบครันเลยครับ:

Code (PHP)
$table->foreign('user_id')->references('id')->on('users')->on_delete('restrict');
$table->foreign('user_id')->references('id')->on('users')->on_update('cascade');


ตัวอย่างข้างล่างเป็นการลบคีย์เชื่อมของตาราง posts :

Code (PHP)
$table->drop_foreign('posts_user_id_foreign');


Note: คอลัมน์ที่เป็นคีย์เชื่อม laravel จะทำการ auto increments ให้ในกรณีที่คอลัมน์มีชนิดเป็น unsigned โดยใช้ฟังก์ชัน unsigned() โดยเราต้องสร้างคอลัมน์ที่เป็นคีย์เชื่อมนี้ก่อนการเชื่อม และฐานข้อมูลต้องมีชนิดเป็น InnoDB

Code (PHP)
$table->engine = 'InnoDB';
$table->integer('user_id')->unsigned();


บทหน้าจะมาต่อในเรื่อง Cookies กับ Session ครับ







   
Share
Bookmark.   

  By : taqman
  Article : บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ
  Score Rating :
  Create Date : 2013-05-20
  Download : No files
Sponsored Links
ThaiCreate.Com Forum


Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


Hit Link
   







Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่