DATABASE
Query builder
Khai báo Select Statements Joins Where Clauses Or Where Clauses Additional Where Clauses Ordering, Grouping, Limit & Offset
Khai báo
Để sử dụng query builder ta có dùng Qr::set() để khởi tạo query builder
Qr::set()
Qr::set($column, $operator, $value)
//Các tham số truyền vào set tương ứng với điều kiện where
Qr::set($number)
//Truyền vào number tương đương với where('id', $number)
Select Statements
Bạn có thể không phải lúc nào cũng muốn chọn tất cả các cột từ bảng cơ sở dữ liệu. Sử dụng phương pháp này, bạn có thể chỉ định mệnh đề "select" tùy chỉnh cho truy vấn:select
Qr::set()->select('id', 'name')
Đôi khi bạn có thể cần chèn một chuỗi tùy ý vào một truy vấn. Để tạo biểu thức chuỗi thô, bạn có thể sử dụng phương thức được cung cấp
use Illuminate\Database\Capsule\Manager as DB;
Qr::set()->select(DB::raw('count(*) as user_count, status'))
//hoặc sử dụng
Qr::set()->selectRaw('price * ? as price_with_tax', [1.0825])
Joins
Inner Join Clause
Qr::set()->join('contacts', 'users.id', '=', 'contacts.user_id')
Left Join / Right Join Clause
Qr::set()->leftJoin('posts', 'users.id', '=', 'posts.user_id')
Qr::set()->rightJoin('posts', 'users.id', '=', 'posts.user_id')
Where Clauses
Bạn có thể sử dụng phương pháp của trình tạo truy vấn để thêm mệnh đề "where" vào truy vấn. Cuộc gọi cơ bản nhất đến phương thức yêu cầu ba đối số. Đối số đầu tiên là tên của cột. Đối số thứ hai là một toán tử, có thể là bất kỳ toán tử nào được hỗ trợ của cơ sở dữ liệu. Đối số thứ ba là giá trị để so sánh với giá trị của cột
Qr::set()
->where('votes', '=', 100)
->where('age', '>', 35)
Để thuận tiện, nếu bạn muốn xác minh rằng một cột là một giá trị nhất định, bạn có thể chuyển giá trị làm đối số thứ hai cho phương thức. Query sẽ giả sử bạn muốn sử dụng toán tử: =
Qr::set()
->where('votes', 100)
Như đã đề cập trước đây, bạn có thể sử dụng bất kỳ toán tử nào được hệ thống cơ sở dữ liệu của bạn hỗ trợ:
Qr::set()
->where('votes', '>=', 100)
->where('votes', '<>', 100)
->where('name', 'like', 'T%')
Or Where Clauses
Qr::set()
->where('votes', '>', 100)
->orWhere('name', 'John')
Nếu bạn cần nhóm một điều kiện "hoặc" trong ngoặc đơn, bạn có thể chuyển một Qr làm đối số đầu tiên cho phương thức
Qr::set()
->where('votes', '>', 100)
->orWhere(function($query) { $query->where('name', 'Abigail')->where('votes', '>', 50); })
Ví dụ sẽ tạo mẫu SQL
where votes > 100 or (name = 'Abigail' and votes > 50)
Additional Where Clauses
whereIn / whereNotIn / orWhereIn / orWhereNotIn
Phương thức xác minh rằng giá trị của một cột đã cho được chứa trong mảng đã cho
Qr::set()->whereIn('id', [1, 100])
Qr::set()->whereNotIn('id', [1, 100])
whereBetween / orWhereBetween
Phương pháp xác minh rằng giá trị của một cột nằm giữa hai giá trị
Qr::set()
->whereBetween('votes', [1, 100])
whereNotBetween / orWhereNotBetween
Qr::set()
->whereNotBetween('votes', [1, 100])
Ordering, Grouping, Limit & Offset
Ordering
Phương pháp này cho phép bạn sắp xếp kết quả của truy vấn theo một cột nhất định. Đối số đầu tiên được chấp nhận bởi phương thức phải là cột bạn muốn sắp xếp theo, trong khi đối số thứ hai xác định cách sắp xếp
Qr::set()
->orderBy('name', 'desc')
->orderBy('email', 'asc')
Qr::set()
->orderByDesc('name')
Grouping
Qr::set()
->groupBy('account_id')
->having('account_id', '>', 100)
Limit & Offset
Qr::set()
->offset(10)
->limit(5)
Schema
Table
Creating Tables
Để tạo một bảng cơ sở dữ liệu mới, hãy sử dụng phương pháp trên schema. Phương thức chấp nhận hai đối số: thứ nhất là tên của bảng, trong khi thứ hai là một đóng nhận một đối tượng có thể được sử dụng để xác định bảng mới
model()::schema()->create('users', function ($table) {
$table->id();
$table->string('name');
$table->string('email');
$table->timestamps();
})
Kiểm tra sự tồn tại của Table / column
Bạn có thể kiểm tra sự tồn tại của bảng hoặc cột bằng cách sử dụng các phương pháp
if (model()::schema()->hasTable('users')) {
//The "users" table exists...
}
if (model()::schema()->hasColumn('users', 'email')) {
// The "users" table exists and has an "email" column...
}
Cập nhật Table
model()::schema()->table('users', function ($table) {
$table->integer('votes');
})
Đổi tên Table / Xóa Table
model()::schema()->rename($from, $to)
model()::schema()->drop('users');
model()::schema()->dropIfExists('users');
Columns
Các loại cột có sẵn
Tham khảo laravel migrations column
Cập nhật Column Attributes
model()::schema()->table('users', function($table) {
$table->string('name', 50)->change();
});
Đổi tên Column
model()::schema()->table('users', function($table) {
$table->renameColumn('from', 'to');
});
Xóa Column
model()::schema()->table('users', function($table) {
$table->dropColumn('name');
$table->dropColumn(['votes', 'avatar', 'location']);
});
Model
Function Model
model($table)
Phương thức lấy một trường dữ liệu
model($table)->get($queryBuilder)
Phương thức lấy nhiều trường dữ liệu
model($table)->gets($queryBuilder)
Phương thức đếm trường dữ liệu
model($table)->count($queryBuilder)
Phương thức xuất sql
model($table)->toSql($queryBuilder)
Phương thức xóa dữ liệu
model($table)->delete($queryBuilder)
Phương thức cập nhật dữ liệu
model($table)->update($update, $queryBuilder)
Phương thức thêm dữ liệu
model($table)->add($addData)
Phương thức cập nhật dữ liệu
model($table)->update($update, $queryBuilder)
Khi không truyền tham số $table vào bạn có thể sử dụng như một query builder của laravel
model()::table()
model()::schema()
Class Model
Class model cung cấp một phương thức kế thừa kèm theo các phương thức:
get
gets
count
toSql
update
getMeta
updateMeta
deleteMeta