การ JOIN ตารางใน Laravel 5.1

การ JOIN ตารางใน Laravel 5.1



ใช้ Model ของ table นั้นๆ แล้วเพิ่ม relation function ใน model นั้นเช่น user -> user_profile
 สัมพันธ์กันแบบ 1- n
อาจจะ เขียน function

   ใน Model สร้างฟังก์ชั่นสำหรับ Relattion User.php

public function userProfile{
  return hasMany('UserProfile', 'profileID');
}

ใน Model ก็ต้องสร้าง Function เหมือนกันสำหรับ Relattion UserProfile.php

public function User{
  return belongTo('User', 'id');
}

การเรียกใช้ใน controller
$user_with_profile = User::where('id', '=', '1')->first()->with('UserProfile');


ก็จะได้ข้อมูล ของ Obj Model User แล้ Model UserProfile ออกมาโดยจะเป็นประมาณนี้

array(User)[
  id => 'x'
  x => 'xx'
  'xx' => 'xxx'
  'UserProfile' => [
    'profileID' => 'x',
    ....
  ]
]

เพิ่มเติมอ่านได้ในคู่มือ laravel 5.1 ได้เลยครับ : https://laravel.com/docs/5.1/eloquent-relationships
Read More
Sleeping Owl Packet ที่ทำให้ ระบบจัดการเป็นเรื่องกล้วยๆ

Sleeping Owl Packet ที่ทำให้ ระบบจัดการเป็นเรื่องกล้วยๆ


Sourceและคู่มือ : http://packalyst.com/packages/package/acacha/admin

วันนี้จะมากล่าวถึงเรื่อง การทำระบบหลังบ้าน จากง่ายให้ง่ายขึ้นไปอีก ส่วนใหญ่พวกงานหลังบ้านก็คงหนีไม่พ้น เพิ่ม ลบ แก้ไข ข้อมูลใน Table ต่างๆ Sleeping Owl ได้ตระเตรียมเครื่องมือให้สร้างระบบหลังบ้านไว้เพียบ ไม่ว่าจะเป็น Generate Table แสดงข้อมูล ได้ในไม่กี่ บรรทัด หรือ Form เพิ่ม แก้ไข และ ปุ่มลบ ในไม่กี่บรรทัดเช่นกัน

สิ่งที่มากับ Packet :

sb-admin-2 template -- tempalte ของระบบ หลังบ้าน
jQuery 1.11.0 -- ก็ Jquery อ่ะ
Bootstrap v3.2.0 -- ก็ Boostrap อะ
Chosen v1.4.2 -- อันนี้มั่ว น่าจะเป็นตัว Select Box
DataTables 1.10.0-dev -- Jquery Plugin Datatables สำหรับสร้าง Tables และแบ่งหน้า Filter อื่นๆ อีกเยอะแยะ
Nestable jQuery Plugin -- ไม่รู้อะไร
Lightbox for Bootstrap 3 -- Modal ไงเธอ...
Font Awesome 4.1.0 -- Icon ต่างๆ
Metismenu 1.0.3 -- อะไรหว่า คงเป็น
morris.js v0.5.0 --
bootbox.js v4.3.0 -- 
Bootstrap datetimepicker -- datetime picker
CKEditor -- textarea แบบ จับว่าง
flow.js --
เริ่มจากติดตั้ง จาก Composer โดยการ เพิ่ม 

"sleeping-owl/admin": "dev-development"
ใน Composer.json จากนั้นสั่ง Update เพื่อดึง Packet เลย
composer update self (มั้ง ลองเซิจดูอีกทีละกัน)


หลังจาก Composer อัพเดทเสร็จก็ เปิดไฟล์ config/app.php ยัดไอ่นี้เข้าไป ใน aliases [... ];
'Admin'         => 'SleepingOwl\Admin\Admin',
'AdminAuth'     => 'SleepingOwl\AdminAuth\Facades\AdminAuth',
'Column'        => 'SleepingOwl\Admin\Columns\Column',
'ColumnFilter'  => 'SleepingOwl\Admin\ColumnFilters\ColumnFilter',
'Filter'        => 'SleepingOwl\Admin\Filter\Filter',
'AdminDisplay'  => 'SleepingOwl\Admin\Display\AdminDisplay',
'AdminForm'     => 'SleepingOwl\Admin\Form\AdminForm',
'AdminTemplate' => 'SleepingOwl\Admin\Templates\Facade\AdminTemplate',
'FormItem'      => 'SleepingOwl\Admin\FormItems\FormItem',


แล้วสั่ง
php artisan admin:install
บร๊ะ เสร็จแล้ว ลองเข้าดู
http://url.com/admin
ถ้าเจอหน้า Login แสดงว่าติดตั้งเสร็จสมบูรณ์ ไว้วันหลังจะมาต่อวิธีใช้
หลังจากติดตั้งเสร็จลองมาดูการใช้งานคร่าวกันนะครับ ไว้แบบละเอียดจะมาต่อภายหลัง
1. หลังการสร้าง Model ของ Table ของเราเสร็จ เราลองมาดูการสร้างหน้าจัดการ ของ Tables นั้นๆ แปปเดียวได้ทั้ง เพิ่ม ลบ แก้ไข




ใน Model user.php ต้องมี $fillable เพิ่มเข้าไป
protected $fillable = ['ชื่อฟิว', '...', '..'];
สมมุติมีตาราง Users และ Modelชื่อ User อยู่แล้ว ผมก็จะสร้างไฟล์มาตามนี้ app/admin/User.php : แล้วคำสั่งในไฟล์ก็ตามด้านล่างเลย
Admin::model('\App\Models\User')->title('จัดการผู้ใช้')->as('user_manage')
->columns(function(){
 Column::string('id', 'ID');
 Column::sex('sex','เพศ');
 Column::string('prename.pre_title', 'คำนำหน้า');
 Column::string('first_name', 'ชื่อ');
 Column::string('last_name', 'นามสกุล');
 Column::string('email', 'Email');
 Column::string('telephone', 'เบอร์โทรศัพท์');
 Column::string('created_at', 'วันที่สมัคร');
})
->form(function ()
{
 FormItem::select('sex', 'เพศ')->list([
  1 => 'ชาย', 
  2 => 'หญิง', 
 ])->required(false);
 FormItem::select('prenameId', 'คำนำหน้าชื่อ')->list(\App\Models\Prename::class)->attributes(['required' => 'true']);
 FormItem::Text('first_name', 'ชื่อ')->required()->attributes(['required' => 'true']);
 FormItem::Text('last_name', 'นามสกุล')->required()->attributes(['required' => 'true']);
 FormItem::Text('email', 'Email')->required()->attributes([
  'required' => 'true',
  'pattern' => '/[a-z0-9]*@[a-z]{2,3}\.[a-z]{2,3}/i'
 ]);
 FormItem::Text('telephone', 'เบอร์โทรศัพท์')->required()->attributes(['required' => 'true']);
 FormItem::Password('password', 'รหัสผ่าน')->required()->attributes(['required' => 'true']);
});
จากนั้นลองเข้า http://url.com/admin/user_manage แค่นี้ก็ได้ระบบจัดการ ง่ายๆ มาละ หนึ่งตาราง (ง่ายไปป่าว) O_o ไว้คราวหลังมาต่อนะครับ สงสัยอะไรสอบถามผ่าน Comment ได้เลยว่างจะมาช่วยหาคำตอบครับ

เอาคู่มือไปศึกษากันก่อนละกันครับ : http://sleeping-owl.github.io/
Read More
เรื่องแรก การ Merge รวม Error Message ใน Laravel 4,5

เรื่องแรก การ Merge รวม Error Message ใน Laravel 4,5


การเก็บ message ของ laravel ตามที่เข้าใจคือ จะเก็บเป็น object ของ messages bag ซึ่งการร่วม message นี้ สามารถใช้คำสั่ง

$errors = $validateUser->errors();
$errors->merge($validateRole->errors());


Read More
Blog ใหม่สร้างไว้ เพื่อบันทึกเรื่องราวการใช้งาน Laravel :) แนะแบ่งปันให้คนที่สนใจด้วย

Blog ใหม่สร้างไว้ เพื่อบันทึกเรื่องราวการใช้งาน Laravel :) แนะแบ่งปันให้คนที่สนใจด้วย



วางแผนไว้ว่า จะจดบันทึกปัญหา ที่ตนเองได้เจอ และหาวิธีแก้ ไว้ใน Blogger เผื่อว่า จะใช้บันทึกความจำ ของตนเอง และ แชร์ให้ ใครหลายๆ คนได้อ่านด้วยกัน
Read More