Ồ vâng, bây giờ tôi hiểu rồi. đối với trường hợp đó bây giờ @Ilyes512 đã đúng, bạn cần giao dịch. Vì vậy, khi có sự cố xảy ra, cứu đội trưởng, mọi thứ sẽ tự động được khôi phục
Nhưng một lần nữa, không thể lưu cả hai hồ sơ cùng một lúc vào bất kỳ thời điểm nào, con tàu phải được cứu trước trước thuyền trưởng. Nó có ý nghĩa bởi vì, ngay cả trong cuộc sống thực, một con tàu phải tồn tại trước khi thuyền trưởng xuất hiện trên đó
Vì vậy, một cái gì đó như thế này, là những gì tôi đang nghĩ. Tôi chưa thử nhưng tôi nghĩ nó sẽ hoạt động
$ship = new Ship;
$ship->name = 'Enterprise';
$ship->registry = 'ncc-1701D';
$captain = new Captain;
$captain->name = 'jean Luc Picard';
DB::transaction[function[] use [$ship, $captain] {
$ship = $ship->save[]; //Ship Exists First
Ship::find[$ship->id]->captain[]->save[$captain];//Captain is saved to existing ship
}];
Bằng cách này, bạn sẽ được đảm bảo theo cả hai cách trong khi lưu, chẳng hạn như trong đoạn mã trên. -
- Nếu xảy ra sự cố khi cứu tàu, sẽ không có tàu nào được cứu và do đó sẽ không có thuyền trưởng nào được cứu
- Nếu xảy ra sự cố khi cứu thuyền trưởng, tàu sẽ được cứu và không có thuyền trưởng nào được cứu
Để có thêm quyền kiểm soát khi sử dụng các giao dịch này, hãy thử {}bắt{} các khối như thế này
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
Eloquent ORM đi kèm với Laravel cung cấp triển khai ActiveRecord đơn giản, đẹp mắt để làm việc với cơ sở dữ liệu của bạn. Mỗi bảng cơ sở dữ liệu có một "Mô hình" tương ứng được sử dụng để tương tác với bảng đó
Trước khi bắt đầu, hãy đảm bảo định cấu hình kết nối cơ sở dữ liệu trong
class User extends Eloquent {
protected $table = 'my_users';
13Sử dụng cơ bản
Để bắt đầu, hãy tạo một mô hình Eloquent. Các mô hình thường nằm trong thư mục
class User extends Eloquent {
protected $table = 'my_users';
14, nhưng bạn có thể tự do đặt chúng ở bất kỳ đâu có thể được tải tự động theo tệp class User extends Eloquent {
protected $table = 'my_users';
15 của bạnXác định một mô hình hùng biện
class User extends Eloquent {}
Lưu ý rằng chúng tôi đã không cho Eloquent biết bảng nào sẽ được sử dụng cho mô hình
class User extends Eloquent {
protected $table = 'my_users';
16 của chúng tôi. Tên viết thường, số nhiều của lớp sẽ được sử dụng làm tên bảng trừ khi một tên khác được chỉ định rõ ràng. Vì vậy, trong trường hợp này, Eloquent sẽ giả sử mô hình class User extends Eloquent {
protected $table = 'my_users';
16 lưu trữ các bản ghi trong bảng class User extends Eloquent {
protected $table = 'my_users';
18. Bạn có thể chỉ định một bảng tùy chỉnh bằng cách xác định thuộc tính class User extends Eloquent {
protected $table = 'my_users';
19 trên mô hình của mìnhclass User extends Eloquent {
protected $table = 'my_users';
Ghi chú. Eloquent cũng sẽ giả định rằng mỗi bảng có một cột khóa chính tên là
20. Bạn có thể xác định thuộc tính
class User extends Eloquent {
protected $table = 'my_users';
21 để ghi đè quy ước này. Tương tự, bạn có thể xác định thuộc tính
class User extends Eloquent {
protected $table = 'my_users';
22 để ghi đè tên của kết nối cơ sở dữ liệu sẽ được sử dụng khi sử dụng mô hình
class User extends Eloquent {
protected $table = 'my_users';
Khi một mô hình được xác định, bạn đã sẵn sàng bắt đầu truy xuất và tạo các bản ghi trong bảng của mình. Lưu ý rằng bạn sẽ cần đặt các cột
class User extends Eloquent {
protected $table = 'my_users';
23 và class User extends Eloquent {
protected $table = 'my_users';
24 trên bảng của mình theo mặc định. Nếu bạn không muốn các cột này được duy trì tự động, hãy đặt thuộc tính class User extends Eloquent {
protected $table = 'my_users';
25 trên mô hình của bạn thành class User extends Eloquent {
protected $table = 'my_users';
26Lấy tất cả các mô hình
Truy xuất bản ghi bằng khóa chính
Ghi chú. Tất cả các phương thức có sẵn trên trình tạo truy vấn cũng có sẵn khi truy vấn các mô hình Eloquent
Truy xuất một mô hình bằng khóa chính hoặc ném một ngoại lệ
Đôi khi, bạn có thể muốn đưa ra một ngoại lệ nếu không tìm thấy mô hình, cho phép bạn bắt các ngoại lệ bằng cách sử dụng trình xử lý
class User extends Eloquent {
protected $table = 'my_users';
27 và hiển thị trang 404DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
9Để đăng ký trình xử lý lỗi, hãy lắng nghe
class User extends Eloquent {
protected $table = 'my_users';
28class User extends Eloquent {
protected $table = 'my_users';
1Truy vấn bằng Eloquent Models
class User extends Eloquent {
protected $table = 'my_users';
2uẩn hùng hồn
Tất nhiên, bạn cũng có thể sử dụng các hàm tổng hợp của trình tạo truy vấn
class User extends Eloquent {
protected $table = 'my_users';
3Nếu bạn không thể tạo truy vấn mình cần thông qua giao diện trôi chảy, vui lòng sử dụng
class User extends Eloquent {
protected $table = 'my_users';
29class User extends Eloquent {
protected $table = 'my_users';
5Kết quả Chunking
Nếu bạn cần xử lý nhiều [hàng nghìn] bản ghi Eloquent, sử dụng lệnh
class User extends Eloquent {
protected $table = 'my_users';
30 sẽ cho phép bạn thực hiện mà không ngốn hết RAMclass User extends Eloquent {
protected $table = 'my_users';
7Đối số đầu tiên được truyền cho phương thức là số lượng bản ghi bạn muốn nhận trên mỗi "khối". Đóng được chuyển thành đối số thứ hai sẽ được gọi cho mỗi đoạn được lấy từ cơ sở dữ liệu
Chỉ định kết nối truy vấn
Bạn cũng có thể chỉ định kết nối cơ sở dữ liệu nào sẽ được sử dụng khi chạy truy vấn Eloquent. Đơn giản chỉ cần sử dụng phương pháp
class User extends Eloquent {
protected $table = 'my_users';
31class User extends Eloquent {
protected $table = 'my_users';
9chuyển nhượng hàng loạt
Khi tạo một mô hình mới, bạn chuyển một mảng các thuộc tính cho hàm tạo mô hình. Các thuộc tính này sau đó được gán cho mô hình thông qua gán hàng loạt. Điều này là thuận tiện; . Nếu đầu vào của người dùng được đưa vào một mô hình một cách mù quáng, thì người dùng có thể tự do sửa đổi bất kỳ và tất cả các thuộc tính của mô hình. Vì lý do này, tất cả các mẫu Eloquent đều mặc định bảo vệ chống lại việc gán hàng loạt
Để bắt đầu, hãy đặt thuộc tính
class User extends Eloquent {
protected $table = 'my_users';
32 hoặc class User extends Eloquent {
protected $table = 'my_users';
33 trên mô hình của bạnXác định các thuộc tính có thể điền vào một mô hình
Thuộc tính
class User extends Eloquent {
protected $table = 'my_users';
32 chỉ định thuộc tính nào có thể gán hàng loạt. Điều này có thể được đặt ở cấp lớp hoặc cấp độ cá thểclass User extends Eloquent {
protected $table = 'my_users';
3Trong ví dụ này, chỉ có ba thuộc tính được liệt kê là có thể gán hàng loạt
Xác định các thuộc tính được bảo vệ trên một mô hình
Nghịch đảo của
class User extends Eloquent {
protected $table = 'my_users';
32 là class User extends Eloquent {
protected $table = 'my_users';
33 và đóng vai trò là "danh sách đen" thay vì "danh sách trắng"class User extends Eloquent {
protected $table = 'my_users';
0Ghi chú. Khi sử dụng
33, bạn vẫn không bao giờ được chuyển
class User extends Eloquent {
protected $table = 'my_users';
38 hoặc bất kỳ mảng thô nào của đầu vào do người dùng kiểm soát vào phương thức
class User extends Eloquent {
protected $table = 'my_users';
39 hoặc
class User extends Eloquent {
protected $table = 'my_users';
40, vì bất kỳ cột nào không được bảo vệ đều có thể được cập nhật
class User extends Eloquent {
protected $table = 'my_users';
Chặn tất cả các thuộc tính từ chuyển nhượng hàng loạt
Trong ví dụ trên, các thuộc tính
class User extends Eloquent {
protected $table = 'my_users';
20 và class User extends Eloquent {
protected $table = 'my_users';
42 có thể không được gán hàng loạt. Tất cả các thuộc tính khác sẽ được gán hàng loạt. Bạn cũng có thể chặn tất cả các thuộc tính khỏi gán hàng loạt bằng cách sử dụng thuộc tính bảo vệclass User extends Eloquent {
protected $table = 'my_users';
1Chèn, cập nhật, xóa
Để tạo một bản ghi mới trong cơ sở dữ liệu từ một mô hình, chỉ cần tạo một phiên bản mô hình mới và gọi phương thức
class User extends Eloquent {
protected $table = 'my_users';
39Lưu một mô hình mới
Ghi chú. Thông thường, các mẫu Eloquent của bạn sẽ có các phím tăng tự động. Tuy nhiên, nếu bạn muốn chỉ định khóa của riêng mình, hãy đặt thuộc tính
44 trên mô hình của bạn thành
class User extends Eloquent {
protected $table = 'my_users';
26
class User extends Eloquent {
protected $table = 'my_users';
Bạn cũng có thể sử dụng phương pháp
class User extends Eloquent {
protected $table = 'my_users';
46 để lưu mô hình mới trong một dòng. Phiên bản mô hình được chèn sẽ được trả về cho bạn từ phương thức. Tuy nhiên, trước khi làm như vậy, bạn cần chỉ định thuộc tính class User extends Eloquent {
protected $table = 'my_users';
32 hoặc class User extends Eloquent {
protected $table = 'my_users';
33 trên mô hình, vì tất cả các mô hình Eloquent đều bảo vệ chống lại việc gán hàng loạtSau khi lưu hoặc tạo một mô hình mới sử dụng ID tăng tự động, bạn có thể truy xuất ID bằng cách truy cập thuộc tính
class User extends Eloquent {
protected $table = 'my_users';
20 của đối tượngĐặt các thuộc tính được bảo vệ trên mô hình
class User extends Eloquent {
protected $table = 'my_users';
2Sử dụng phương pháp tạo mô hình
class User extends Eloquent {
protected $table = 'my_users';
3Cập nhật mô hình đã truy xuất
Để cập nhật một mô hình, bạn có thể truy xuất nó, thay đổi một thuộc tính và sử dụng phương thức
class User extends Eloquent {
protected $table = 'my_users';
39Lưu một mô hình và các mối quan hệ
Đôi khi bạn có thể muốn lưu không chỉ một mô hình mà còn tất cả các mối quan hệ của nó. Để làm như vậy, bạn có thể sử dụng phương pháp
class User extends Eloquent {
protected $table = 'my_users';
51Bạn cũng có thể chạy các bản cập nhật dưới dạng truy vấn đối với một tập hợp các mô hình
class User extends Eloquent {
protected $table = 'my_users';
4Ghi chú. Không có sự kiện mô hình nào được kích hoạt khi cập nhật một tập hợp các mô hình thông qua trình tạo truy vấn Eloquent
Xóa một mô hình hiện có
Để xóa một mô hình, chỉ cần gọi phương thức
class User extends Eloquent {
protected $table = 'my_users';
52 trên ví dụXóa một mô hình hiện có bằng khóa
class User extends Eloquent {
protected $table = 'my_users';
5Tất nhiên, bạn cũng có thể chạy truy vấn xóa trên một tập hợp các mô hình
class User extends Eloquent {
protected $table = 'my_users';
6Chỉ cập nhật Dấu thời gian của Người mẫu
Nếu bạn chỉ muốn cập nhật dấu thời gian trên một mô hình, bạn có thể sử dụng phương pháp
class User extends Eloquent {
protected $table = 'my_users';
53Xóa mềm
Khi xóa mềm một mô hình, nó không thực sự bị xóa khỏi cơ sở dữ liệu của bạn. Thay vào đó, dấu thời gian
class User extends Eloquent {
protected $table = 'my_users';
54 được đặt trên bản ghi. Để kích hoạt xóa mềm cho một mô hình, hãy áp dụng class User extends Eloquent {
protected $table = 'my_users';
55 cho mô hìnhclass User extends Eloquent {
protected $table = 'my_users';
7Để thêm cột
class User extends Eloquent {
protected $table = 'my_users';
54 vào bảng của bạn, bạn có thể sử dụng phương pháp class User extends Eloquent {
protected $table = 'my_users';
57 từ quá trình di chuyểnBây giờ, khi bạn gọi phương thức
class User extends Eloquent {
protected $table = 'my_users';
52 trên mô hình, cột class User extends Eloquent {
protected $table = 'my_users';
54 sẽ được đặt thành dấu thời gian hiện tại. Khi truy vấn một mô hình sử dụng xóa mềm, các mô hình "đã xóa" sẽ không được đưa vào kết quả truy vấnBuộc các mô hình đã xóa mềm vào kết quả
Để buộc các mô hình đã xóa mềm xuất hiện trong tập hợp kết quả, hãy sử dụng phương pháp
class User extends Eloquent {
protected $table = 'my_users';
60 trên truy vấnclass User extends Eloquent {
protected $table = 'my_users';
8Phương pháp
class User extends Eloquent {
protected $table = 'my_users';
60 có thể được sử dụng trên một mối quan hệ xác địnhclass User extends Eloquent {
protected $table = 'my_users';
9Nếu bạn chỉ muốn nhận các mô hình đã xóa mềm trong kết quả của mình, bạn có thể sử dụng phương pháp
class User extends Eloquent {
protected $table = 'my_users';
62DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
90Để khôi phục mô hình đã xóa mềm về trạng thái hoạt động, hãy sử dụng phương pháp
class User extends Eloquent {
protected $table = 'my_users';
63Bạn cũng có thể sử dụng phương pháp
class User extends Eloquent {
protected $table = 'my_users';
63 trên một truy vấnDB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
91Giống như với
class User extends Eloquent {
protected $table = 'my_users';
60, phương pháp class User extends Eloquent {
protected $table = 'my_users';
63 cũng có thể được sử dụng trên các mối quan hệDB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
92Nếu bạn thực sự muốn xóa một mô hình khỏi cơ sở dữ liệu, bạn có thể sử dụng phương pháp
class User extends Eloquent {
protected $table = 'my_users';
67Phương pháp
class User extends Eloquent {
protected $table = 'my_users';
67 cũng hoạt động trên các mối quan hệDB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
93Để xác định xem một phiên bản mô hình nhất định đã bị xóa mềm hay chưa, bạn có thể sử dụng phương pháp
class User extends Eloquent {
protected $table = 'my_users';
69Dấu thời gian
Theo mặc định, Eloquent sẽ tự động duy trì các cột
class User extends Eloquent {
protected $table = 'my_users';
24 và class User extends Eloquent {
protected $table = 'my_users';
23 trên bảng cơ sở dữ liệu của bạn. Chỉ cần thêm các cột class User extends Eloquent {
protected $table = 'my_users';
72 này vào bảng của bạn và Eloquent sẽ lo phần còn lại. Nếu bạn không muốn Eloquent duy trì các cột này, hãy thêm thuộc tính sau vào mô hình của bạnVô hiệu hóa dấu thời gian tự động
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
94Cung cấp định dạng dấu thời gian tùy chỉnh
Nếu bạn muốn tùy chỉnh định dạng dấu thời gian của mình, bạn có thể ghi đè phương thức
class User extends Eloquent {
protected $table = 'my_users';
73 trong mô hình của mìnhDB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
95Phạm vi truy vấn
Xác định phạm vi truy vấn
Phạm vi cho phép bạn dễ dàng sử dụng lại logic truy vấn trong các mô hình của mình. Để xác định phạm vi, chỉ cần thêm tiền tố vào một phương thức mô hình bằng
class User extends Eloquent {
protected $table = 'my_users';
74DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
96Sử dụng phạm vi truy vấn
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
97Phạm vi động
Đôi khi bạn có thể muốn xác định một phạm vi chấp nhận các tham số. Chỉ cần thêm các tham số của bạn vào chức năng phạm vi của bạn
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
98Sau đó truyền tham số vào cuộc gọi phạm vi
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
99Phạm vi toàn cầu
Đôi khi bạn có thể muốn xác định phạm vi áp dụng cho tất cả các truy vấn được thực hiện trên một mô hình. Về bản chất, đây là cách hoạt động của tính năng "xóa mềm" của Eloquent. Phạm vi toàn cầu được xác định bằng cách sử dụng kết hợp các đặc điểm PHP và triển khai
class User extends Eloquent {
protected $table = 'my_users';
75Đầu tiên, hãy xác định một đặc điểm. Đối với ví dụ này, chúng tôi sẽ sử dụng
class User extends Eloquent {
protected $table = 'my_users';
55 đi kèm với Laravelclass User extends Eloquent {
protected $table = 'my_users';
10Nếu một mô hình Eloquent sử dụng một đặc điểm có phương thức phù hợp với quy ước đặt tên
class User extends Eloquent {
protected $table = 'my_users';
77, thì phương thức đặc điểm đó sẽ được gọi khi mô hình Eloquent được khởi động, giúp bạn có cơ hội đăng ký phạm vi toàn cầu hoặc thực hiện bất kỳ điều gì khác mà bạn muốn. Phạm vi phải triển khai class User extends Eloquent {
protected $table = 'my_users';
78, chỉ định hai phương thức. class User extends Eloquent {
protected $table = 'my_users';
79 và class User extends Eloquent {
protected $table = 'my_users';
80Phương thức
class User extends Eloquent {
protected $table = 'my_users';
79 nhận một đối tượng xây dựng truy vấn class User extends Eloquent {
protected $table = 'my_users';
82 và chịu trách nhiệm thêm bất kỳ mệnh đề class User extends Eloquent {
protected $table = 'my_users';
83 bổ sung nào mà phạm vi muốn thêm vào. Phương thức class User extends Eloquent {
protected $table = 'my_users';
80 cũng nhận một đối tượng class User extends Eloquent {
protected $table = 'my_users';
85 và chịu trách nhiệm đảo ngược hành động được thực hiện bởi class User extends Eloquent {
protected $table = 'my_users';
79. Nói cách khác, class User extends Eloquent {
protected $table = 'my_users';
80 nên xóa mệnh đề class User extends Eloquent {
protected $table = 'my_users';
83 [hoặc bất kỳ mệnh đề nào khác] đã được thêm vào. Vì vậy, đối với class User extends Eloquent {
protected $table = 'my_users';
89 của chúng tôi, các phương thức trông giống như thế nàyclass User extends Eloquent {
protected $table = 'my_users';
11Các mối quan hệ
Tất nhiên, các bảng cơ sở dữ liệu của bạn có thể liên quan đến nhau. Ví dụ: một bài đăng trên blog có thể có nhiều bình luận hoặc một đơn đặt hàng có thể liên quan đến người dùng đã đặt nó. Eloquent giúp việc quản lý và làm việc với các mối quan hệ này trở nên dễ dàng. Laravel hỗ trợ nhiều loại quan hệ
Một Đối Một
Xác định mối quan hệ một đối một
Mối quan hệ một đối một là một mối quan hệ rất cơ bản. Ví dụ, một mô hình
class User extends Eloquent {
protected $table = 'my_users';
16 có thể có một class User extends Eloquent {
protected $table = 'my_users';
91. Chúng ta có thể định nghĩa mối quan hệ này trong Eloquentclass User extends Eloquent {
protected $table = 'my_users';
12Đối số đầu tiên được truyền cho phương thức
class User extends Eloquent {
protected $table = 'my_users';
92 là tên của mô hình liên quan. Khi mối quan hệ được xác định, chúng tôi có thể truy xuất nó bằng các thuộc tính động của Eloquentclass User extends Eloquent {
protected $table = 'my_users';
13SQL được thực hiện bởi câu lệnh này sẽ như sau
class User extends Eloquent {
protected $table = 'my_users';
14Lưu ý rằng Eloquent giả định khóa ngoại của mối quan hệ dựa trên tên mô hình. Trong trường hợp này, mô hình
class User extends Eloquent {
protected $table = 'my_users';
91 được giả sử sử dụng khóa ngoại class User extends Eloquent {
protected $table = 'my_users';
94. Nếu bạn muốn ghi đè quy ước này, bạn có thể chuyển đối số thứ hai cho phương thức class User extends Eloquent {
protected $table = 'my_users';
92. Hơn nữa, bạn có thể chuyển đối số thứ ba cho phương thức để chỉ định cột cục bộ nào sẽ được sử dụng cho liên kếtclass User extends Eloquent {
protected $table = 'my_users';
15Xác định nghịch đảo của một mối quan hệ
Để xác định nghịch đảo của mối quan hệ trên mô hình
class User extends Eloquent {
protected $table = 'my_users';
91, chúng tôi sử dụng phương pháp class User extends Eloquent {
protected $table = 'my_users';
97class User extends Eloquent {
protected $table = 'my_users';
16Trong ví dụ trên, Eloquent sẽ tìm cột
class User extends Eloquent {
protected $table = 'my_users';
94 trên bảng class User extends Eloquent {
protected $table = 'my_users';
99. Nếu bạn muốn xác định một cột khóa ngoại khác, bạn có thể chuyển nó làm đối số thứ hai cho phương thức class User extends Eloquent {
protected $table = 'my_users';
97class User extends Eloquent {
protected $table = 'my_users';
17Ngoài ra, bạn chuyển tham số thứ ba chỉ định tên của cột được liên kết trên bảng cha
class User extends Eloquent {
protected $table = 'my_users';
18một đến nhiều
Một ví dụ về mối quan hệ một-nhiều là một bài đăng trên blog "có nhiều" nhận xét. Chúng ta có thể mô hình hóa mối quan hệ này như vậy
class User extends Eloquent {
protected $table = 'my_users';
19Bây giờ chúng ta có thể truy cập các bình luận của bài đăng thông qua thuộc tính động
class User extends Eloquent {
protected $table = 'my_users';
20Nếu bạn cần thêm các ràng buộc khác để lấy nhận xét, bạn có thể gọi phương thức
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
901 và tiếp tục xâu chuỗi các điều kiệnclass User extends Eloquent {
protected $table = 'my_users';
21Một lần nữa, bạn có thể ghi đè khóa ngoại thông thường bằng cách chuyển đối số thứ hai cho phương thức
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
902. Và, giống như quan hệ class User extends Eloquent {
protected $table = 'my_users';
92, cột cục bộ cũng có thể được chỉ địnhclass User extends Eloquent {
protected $table = 'my_users';
22Xác định nghịch đảo của một mối quan hệ
Để xác định nghịch đảo của mối quan hệ trên mô hình
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
904, chúng tôi sử dụng phương pháp class User extends Eloquent {
protected $table = 'my_users';
97class User extends Eloquent {
protected $table = 'my_users';
23Nhiều nhiều
Quan hệ nhiều-nhiều là loại quan hệ phức tạp hơn. Một ví dụ về mối quan hệ như vậy là một người dùng có nhiều vai trò, trong đó các vai trò này cũng được chia sẻ bởi những người dùng khác. Ví dụ: nhiều người dùng có thể có vai trò "Quản trị viên". Ba bảng cơ sở dữ liệu là cần thiết cho mối quan hệ này.
class User extends Eloquent {
protected $table = 'my_users';
18, DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
907 và DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
908. Bảng DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
908 được lấy từ thứ tự bảng chữ cái của các tên kiểu máy có liên quan và phải có các cột class User extends Eloquent {
protected $table = 'my_users';
94 và DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
911Chúng ta có thể định nghĩa mối quan hệ nhiều-nhiều bằng cách sử dụng phương pháp
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
912class User extends Eloquent {
protected $table = 'my_users';
24Bây giờ, chúng ta có thể truy xuất các vai trò thông qua mô hình
class User extends Eloquent {
protected $table = 'my_users';
16class User extends Eloquent {
protected $table = 'my_users';
25Nếu bạn muốn sử dụng tên bảng độc đáo cho bảng tổng hợp của mình, bạn có thể chuyển nó làm đối số thứ hai cho phương thức
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
912class User extends Eloquent {
protected $table = 'my_users';
26Bạn cũng có thể ghi đè các phím liên quan thông thường
class User extends Eloquent {
protected $table = 'my_users';
27Tất nhiên, bạn cũng có thể xác định nghịch đảo của mối quan hệ trên mô hình
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
915class User extends Eloquent {
protected $table = 'my_users';
28Có Nhiều Thông Qua
Mối quan hệ "có nhiều thông qua" cung cấp một lối tắt thuận tiện để truy cập các mối quan hệ ở xa thông qua một mối quan hệ trung gian. Ví dụ: mô hình
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
916 có thể có nhiều mô hình DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
917 đến mô hình class User extends Eloquent {
protected $table = 'my_users';
16. Các bảng cho mối quan hệ này sẽ trông như thế nàyMặc dù bảng
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
919 không chứa cột DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
920 nhưng quan hệ DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
921 sẽ cho phép chúng ta truy cập các bài đăng của một quốc gia thông qua DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
922. Hãy xác định mối quan hệclass User extends Eloquent {
protected $table = 'my_users';
29Nếu bạn muốn chỉ định thủ công các khóa của mối quan hệ, bạn có thể chuyển chúng làm đối số thứ ba và thứ tư cho phương thức
class User extends Eloquent {
protected $table = 'my_users';
30quan hệ đa hình
Mối quan hệ đa hình cho phép một mô hình thuộc về nhiều mô hình khác, trên một liên kết duy nhất. Ví dụ: bạn có thể có một mẫu ảnh thuộc mẫu nhân viên hoặc mẫu đơn hàng. Chúng tôi sẽ xác định mối quan hệ này như vậy
class User extends Eloquent {
protected $table = 'my_users';
31Truy xuất một quan hệ đa hình
Bây giờ, chúng tôi có thể truy xuất ảnh cho nhân viên hoặc đơn hàng
class User extends Eloquent {
protected $table = 'my_users';
32Truy xuất chủ sở hữu của một quan hệ đa hình
Tuy nhiên, phép thuật "đa hình" thực sự là khi bạn truy cập nhân viên hoặc đơn đặt hàng từ mẫu
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
923class User extends Eloquent {
protected $table = 'my_users';
33Mối quan hệ
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
924 trên mô hình DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
923 sẽ trả về một thực thể DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
926 hoặc DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
927, tùy thuộc vào loại mô hình nào sở hữu ảnhCấu trúc bảng quan hệ đa hình
Để giúp hiểu cách thức hoạt động của điều này, hãy khám phá cấu trúc cơ sở dữ liệu cho mối quan hệ đa hình
Các trường chính cần chú ý ở đây là ________ 1928 và ________ 1929 trên bảng ________ 1930. Trong ví dụ này, ID sẽ chứa giá trị ID của nhân viên sở hữu hoặc đơn đặt hàng, trong khi loại sẽ chứa tên lớp của mô hình sở hữu. Đây là điều cho phép ORM xác định loại mô hình sở hữu nào sẽ trả về khi truy cập vào mối quan hệ
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
924Nhiều đến nhiều quan hệ đa hình
Cấu trúc bảng quan hệ nhiều hình đa hình
Ngoài quan hệ đa hình truyền thống, bạn cũng có thể chỉ định quan hệ đa hình nhiều-nhiều. Ví dụ: mô hình blog
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
917 và DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
933 có thể chia sẻ mối quan hệ đa hình với mô hình DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
934. Đầu tiên, hãy kiểm tra cấu trúc bảngTiếp theo, chúng tôi đã sẵn sàng để thiết lập các mối quan hệ trên mô hình. Cả mô hình
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
917 và DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
933 sẽ có mối quan hệ DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
937 thông qua phương pháp DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
938class User extends Eloquent {
protected $table = 'my_users';
34Mô hình
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
934 có thể định nghĩa một phương thức cho từng mối quan hệ của nóclass User extends Eloquent {
protected $table = 'my_users';
35Quan hệ truy vấn
Truy vấn quan hệ khi chọn
Khi truy cập các bản ghi cho một mô hình, bạn có thể muốn giới hạn kết quả của mình dựa trên sự tồn tại của một mối quan hệ. Ví dụ: bạn muốn lấy tất cả các bài đăng trên blog có ít nhất một bình luận. Để làm như vậy, bạn có thể sử dụng phương pháp
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
940class User extends Eloquent {
protected $table = 'my_users';
36Bạn cũng có thể chỉ định toán tử và số đếm
class User extends Eloquent {
protected $table = 'my_users';
37Nếu bạn cần thêm sức mạnh, bạn có thể sử dụng các phương pháp
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
941 và DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
942 để đặt điều kiện "ở đâu" cho các truy vấn DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
940 của mìnhclass User extends Eloquent {
protected $table = 'my_users';
38Thuộc tính động
Eloquent cho phép bạn truy cập các mối quan hệ của mình thông qua các thuộc tính động. Eloquent sẽ tự động tải mối quan hệ cho bạn và thậm chí đủ thông minh để biết nên gọi phương thức
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
944 [đối với mối quan hệ một-nhiều] hay DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
945 [đối với mối quan hệ một-đối-một]. Sau đó, nó sẽ có thể truy cập được thông qua một thuộc tính động có cùng tên với quan hệ. Ví dụ với mẫu xe sau DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
946class User extends Eloquent {
protected $table = 'my_users';
16Thay vì lặp lại email của người dùng như thế này
class User extends Eloquent {
protected $table = 'my_users';
50Nó có thể được rút ngắn thành đơn giản
Ghi chú. Mối quan hệ trả về nhiều kết quả sẽ trả về một thể hiện của lớp
947DB::beginTransaction[]; //Start transaction! try{ //saving logic here $ship = $ship->save[]; Ship::find[$ship->id]->captain[]->save[$captain]; } catch[\Exception $e] { //failed logic here DB::rollback[]; throw $e; } DB::commit[];
háo hức tải
Tải háo hức tồn tại để giảm bớt vấn đề truy vấn N + 1. Ví dụ: xem xét mô hình
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
948 có liên quan đến DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
949. Mối quan hệ được định nghĩa như vậyclass User extends Eloquent {
protected $table = 'my_users';
51Bây giờ, hãy xem xét đoạn mã sau
class User extends Eloquent {
protected $table = 'my_users';
52Vòng lặp này sẽ thực hiện 1 truy vấn để truy xuất tất cả sách trên bảng, sau đó thực hiện một truy vấn khác cho từng cuốn sách để truy xuất tác giả. Vì vậy, nếu chúng ta có 25 cuốn sách, vòng lặp này sẽ chạy 26 truy vấn
Rất may, chúng tôi có thể sử dụng tải háo hức để giảm đáng kể số lượng truy vấn. Các mối quan hệ nên được tải háo hức có thể được chỉ định thông qua phương pháp
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
950class User extends Eloquent {
protected $table = 'my_users';
53Trong vòng lặp trên, chỉ có hai truy vấn sẽ được thực hiện
class User extends Eloquent {
protected $table = 'my_users';
54Sử dụng khôn ngoan tải háo hức có thể tăng đáng kể hiệu suất của ứng dụng của bạn
Tất nhiên, bạn có thể háo hức tải nhiều mối quan hệ cùng một lúc
class User extends Eloquent {
protected $table = 'my_users';
55Bạn thậm chí có thể háo hức tải các mối quan hệ lồng nhau
class User extends Eloquent {
protected $table = 'my_users';
56Trong ví dụ trên, mối quan hệ
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
951 sẽ được tải háo hức và mối quan hệ DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
952 của tác giả cũng sẽ được tảiRàng buộc tải háo hức
Đôi khi bạn có thể mong muốn tải một mối quan hệ, nhưng cũng chỉ định một điều kiện cho tải háo hức. Đây là một ví dụ
class User extends Eloquent {
protected $table = 'my_users';
57Trong ví dụ này, chúng tôi muốn tải các bài đăng của người dùng, nhưng chỉ khi cột tiêu đề của bài đăng chứa từ "đầu tiên"
Tất nhiên, đóng cửa tải háo hức không bị giới hạn ở "các ràng buộc". Bạn cũng có thể áp dụng các đơn đặt hàng
class User extends Eloquent {
protected $table = 'my_users';
58Háo hức tải lười biếng
Cũng có thể háo hức tải các mô hình liên quan trực tiếp từ bộ sưu tập mô hình đã có sẵn. Điều này có thể hữu ích khi quyết định động có tải các mô hình liên quan hay không hoặc kết hợp với bộ nhớ đệm
class User extends Eloquent {
protected $table = 'my_users';
59Chèn các mô hình liên quan
Đính kèm một mô hình liên quan
Bạn sẽ thường xuyên cần chèn các mô hình liên quan mới. Ví dụ: bạn có thể muốn chèn nhận xét mới cho bài đăng. Thay vì đặt khóa ngoại
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
953 trên mô hình theo cách thủ công, bạn có thể chèn trực tiếp nhận xét mới từ mô hình DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
917 gốc của nóclass User extends Eloquent {
protected $table = 'my_users';
70Trong ví dụ này, trường
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
953 sẽ tự động được đặt trên nhận xét được chènNếu bạn cần lưu nhiều mô hình liên quan
class User extends Eloquent {
protected $table = 'my_users';
71Liên Kết Người Mẫu [Thuộc Về]
Khi cập nhật mối quan hệ
class User extends Eloquent {
protected $table = 'my_users';
97, bạn có thể sử dụng phương pháp DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
957. Phương pháp này sẽ đặt khóa ngoại trên mô hình conclass User extends Eloquent {
protected $table = 'my_users';
72Chèn các mô hình liên quan [Nhiều đến Nhiều]
Bạn cũng có thể chèn các mô hình liên quan khi làm việc với quan hệ nhiều-nhiều. Hãy tiếp tục sử dụng các mô hình
class User extends Eloquent {
protected $table = 'my_users';
16 và DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
915 của chúng tôi làm ví dụ. Chúng tôi có thể dễ dàng gắn vai trò mới cho người dùng bằng phương pháp DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
960Đính kèm nhiều mô hình
class User extends Eloquent {
protected $table = 'my_users';
73Bạn cũng có thể chuyển một mảng các thuộc tính sẽ được lưu trữ trên bảng tổng hợp cho mối quan hệ
class User extends Eloquent {
protected $table = 'my_users';
74Tất nhiên, đối lập với
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
960 là DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
962class User extends Eloquent {
protected $table = 'my_users';
75Cả
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
960 và DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
962 cũng lấy mảng ID làm đầu vàoclass User extends Eloquent {
protected $table = 'my_users';
76Sử dụng Đồng bộ hóa để Đính kèm Nhiều Mô hình
Bạn cũng có thể sử dụng phương pháp
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
965 để đính kèm các mô hình liên quan. Phương thức DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
965 chấp nhận một mảng ID để đặt trên bảng tổng hợp. Sau khi thao tác này hoàn tất, chỉ các ID trong mảng sẽ nằm trên bảng trung gian cho mô hìnhclass User extends Eloquent {
protected $table = 'my_users';
77Thêm dữ liệu Pivot khi đồng bộ hóa
Bạn cũng có thể liên kết các giá trị bảng tổng hợp khác với các ID đã cho
class User extends Eloquent {
protected $table = 'my_users';
78Đôi khi bạn có thể muốn tạo một mô hình liên quan mới và đính kèm nó trong một lệnh duy nhất. Đối với thao tác này, bạn có thể sử dụng phương pháp
class User extends Eloquent {
protected $table = 'my_users';
39class User extends Eloquent {
protected $table = 'my_users';
79Trong ví dụ này, mô hình
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
915 mới sẽ được lưu và đính kèm vào mô hình người dùng. Bạn cũng có thể chuyển một mảng các thuộc tính để đặt trên bảng nối cho thao tác nàyclass User extends Eloquent {
protected $table = 'my_users';
90Chạm vào dấu thời gian của phụ huynh
Khi một mô hình
class User extends Eloquent {
protected $table = 'my_users';
97 một mô hình khác, chẳng hạn như một DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
904 thuộc về một DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
917, việc cập nhật dấu thời gian của cha mẹ khi mô hình con được cập nhật thường rất hữu ích. Ví dụ: khi mô hình DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
904 được cập nhật, bạn có thể muốn tự động chạm vào dấu thời gian class User extends Eloquent {
protected $table = 'my_users';
23 của DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
917 sở hữu. Hùng biện làm cho nó dễ dàng. Chỉ cần thêm thuộc tính DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
975 chứa tên của các mối quan hệ vào mô hình conclass User extends Eloquent {
protected $table = 'my_users';
91Bây giờ, khi bạn cập nhật một
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
904, thì DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
917 sở hữu sẽ có cột class User extends Eloquent {
protected $table = 'my_users';
23 được cập nhậtclass User extends Eloquent {
protected $table = 'my_users';
92Làm việc với Pivot Table
Như bạn đã biết, làm việc với quan hệ nhiều-nhiều yêu cầu phải có bảng trung gian. Eloquent cung cấp một số cách rất hữu ích để tương tác với bảng này. Ví dụ: giả sử đối tượng
class User extends Eloquent {
protected $table = 'my_users';
16 của chúng ta có nhiều đối tượng DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
915 có liên quan đến. Sau khi truy cập vào mối quan hệ này, chúng tôi có thể truy cập bảng DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
981 trên các mô hìnhclass User extends Eloquent {
protected $table = 'my_users';
93Lưu ý rằng mỗi mô hình
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
915 mà chúng tôi truy xuất được tự động gán một thuộc tính DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
981. Thuộc tính này chứa một mô hình đại diện cho bảng trung gian và có thể được sử dụng như bất kỳ mô hình Eloquent nào khácTheo mặc định, chỉ các khóa sẽ có mặt trên đối tượng
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
981. Nếu bảng tổng hợp của bạn chứa các thuộc tính bổ sung, bạn phải chỉ định chúng khi xác định mối quan hệclass User extends Eloquent {
protected $table = 'my_users';
94Bây giờ các thuộc tính
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
985 và DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
986 sẽ có thể truy cập được trên đối tượng DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
981 của chúng tôi cho mô hình DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
915Nếu bạn muốn bảng tổng hợp của mình tự động duy trì dấu thời gian
class User extends Eloquent {
protected $table = 'my_users';
24 và class User extends Eloquent {
protected $table = 'my_users';
23, hãy sử dụng phương pháp DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
991 trong định nghĩa mối quan hệclass User extends Eloquent {
protected $table = 'my_users';
95Xóa bản ghi trên bảng Pivot
Để xóa tất cả các bản ghi trên bảng tổng hợp cho một mô hình, bạn có thể sử dụng phương pháp
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
962class User extends Eloquent {
protected $table = 'my_users';
96Lưu ý rằng thao tác này không xóa các bản ghi khỏi bảng
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
907 mà chỉ xóa khỏi bảng tổng hợpCập nhật bản ghi trên bảng Pivot
Đôi khi, bạn có thể cần cập nhật bảng tổng hợp của mình nhưng không được tách nó ra. Nếu bạn muốn cập nhật bảng tổng hợp của mình tại chỗ, bạn có thể sử dụng phương pháp
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
994 như vậyclass User extends Eloquent {
protected $table = 'my_users';
97Xác định mô hình Pivot tùy chỉnh
Laravel cũng cho phép bạn xác định mô hình Pivot tùy chỉnh. Để xác định một mô hình tùy chỉnh, trước tiên hãy tạo lớp mô hình "Cơ sở" của riêng bạn mở rộng
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
995. Trong các mô hình Eloquent khác của bạn, hãy mở rộng mô hình cơ sở tùy chỉnh này thay vì cơ sở DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
995 mặc định. Trong mô hình cơ sở của bạn, hãy thêm hàm sau để trả về một phiên bản của mô hình Pivot tùy chỉnh của bạnclass User extends Eloquent {
protected $table = 'my_users';
98bộ sưu tập
Tất cả các tập hợp nhiều kết quả được trả về bởi Eloquent, thông qua phương thức
DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
944 hoặc DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
998, sẽ trả về một đối tượng tập hợp. Đối tượng này triển khai giao diện PHP DB::beginTransaction[]; //Start transaction!
try{
//saving logic here
$ship = $ship->save[];
Ship::find[$ship->id]->captain[]->save[$captain];
}
catch[\Exception $e]
{
//failed logic here
DB::rollback[];
throw $e;
}
DB::commit[];
999 để nó có thể được lặp lại giống như một mảng. Tuy nhiên, đối tượng này cũng có nhiều phương thức hữu ích khác để làm việc với tập kết quảKiểm tra xem một bộ sưu tập có chứa khóa không
Ví dụ: chúng tôi có thể xác định xem tập kết quả có chứa khóa chính đã cho hay không bằng cách sử dụng phương pháp
class User extends Eloquent {
protected $table = 'my_users';
100class User extends Eloquent {
protected $table = 'my_users';
25Các bộ sưu tập cũng có thể được chuyển đổi thành một mảng hoặc JSON
class User extends Eloquent {
protected $table = 'my_users';
30Nếu một bộ sưu tập được chuyển thành một chuỗi, nó sẽ được trả về dưới dạng JSON
class User extends Eloquent {
protected $table = 'my_users';
31Bộ sưu tập lặp lại
Các bộ sưu tập Eloquent cũng chứa một số phương thức hữu ích để lặp và lọc các mục mà chúng chứa
class User extends Eloquent {
protected $table = 'my_users';
32Bộ sưu tập lọc
Khi lọc các bộ sưu tập, hàm gọi lại được cung cấp sẽ được sử dụng làm hàm gọi lại cho array_filter
class User extends Eloquent {
protected $table = 'my_users';
33Ghi chú. Khi lọc một bộ sưu tập và chuyển đổi nó thành JSON, trước tiên hãy thử gọi hàm
101 để đặt lại các khóa của mảng
class User extends Eloquent {
protected $table = 'my_users';
Áp dụng gọi lại cho từng đối tượng bộ sưu tập
class User extends Eloquent {
protected $table = 'my_users';
34Sắp xếp một bộ sưu tập theo một giá trị
class User extends Eloquent {
protected $table = 'my_users';
35Sắp xếp một bộ sưu tập theo một giá trị
class User extends Eloquent {
protected $table = 'my_users';
36Trả lại một loại bộ sưu tập tùy chỉnh
Đôi khi, bạn có thể muốn trả về một đối tượng Bộ sưu tập tùy chỉnh bằng các phương thức được thêm vào của riêng bạn. Bạn có thể chỉ định điều này trên mô hình Eloquent của mình bằng cách ghi đè phương thức
class User extends Eloquent {
protected $table = 'my_users';
102class User extends Eloquent {
protected $table = 'my_users';
37Bộ truy cập & bộ biến đổi
Định nghĩa một Accessor
Eloquent cung cấp một cách thuận tiện để chuyển đổi các thuộc tính mô hình của bạn khi lấy hoặc thiết lập chúng. Chỉ cần xác định một phương thức
class User extends Eloquent {
protected $table = 'my_users';
103 trên mô hình của bạn để khai báo một bộ truy cập. Hãy nhớ rằng các phương thức phải tuân theo trường hợp lạc đà, mặc dù các cột cơ sở dữ liệu của bạn là trường hợp con rắnclass User extends Eloquent {
protected $table = 'my_users';
38Trong ví dụ trên, cột
class User extends Eloquent {
protected $table = 'my_users';
104 có một bộ truy cập. Lưu ý rằng giá trị của thuộc tính được chuyển đến bộ truy cậpXác định một Mutator
Người đột biến được khai báo theo cách tương tự
class User extends Eloquent {
protected $table = 'my_users';
39Người đột biến ngày
Theo mặc định, Eloquent sẽ chuyển đổi các cột
class User extends Eloquent {
protected $table = 'my_users';
24 và class User extends Eloquent {
protected $table = 'my_users';
23 thành các phiên bản của Carbon, cung cấp một loạt các phương thức hữu ích và mở rộng lớp class User extends Eloquent {
protected $table = 'my_users';
107 gốc của PHPBạn có thể tùy chỉnh trường nào được thay đổi tự động và thậm chí vô hiệu hóa hoàn toàn thay đổi này bằng cách ghi đè phương thức
class User extends Eloquent {
protected $table = 'my_users';
108 của mô hìnhclass User extends Eloquent {
protected $table = 'my_users';
00Khi một cột được coi là ngày, bạn có thể đặt giá trị của nó thành dấu thời gian UNIX, chuỗi ngày [
class User extends Eloquent {
protected $table = 'my_users';
109], chuỗi ngày-thời gian và tất nhiên là một thể hiện của class User extends Eloquent {
protected $table = 'my_users';
107 / class User extends Eloquent {
protected $table = 'my_users';
111Để vô hiệu hóa hoàn toàn các thay đổi ngày tháng, chỉ cần trả về một mảng trống từ phương thức
class User extends Eloquent {
protected $table = 'my_users';
108Sự kiện người mẫu
Các mô hình hùng hồn kích hoạt một số sự kiện, cho phép bạn kết nối vào các điểm khác nhau trong vòng đời của mô hình bằng các phương pháp sau.
class User extends Eloquent {
protected $table = 'my_users';
113, class User extends Eloquent {
protected $table = 'my_users';
114, class User extends Eloquent {
protected $table = 'my_users';
115, class User extends Eloquent {
protected $table = 'my_users';
116, class User extends Eloquent {
protected $table = 'my_users';
117, class User extends Eloquent {
protected $table = 'my_users';
118, class User extends Eloquent {
protected $table = 'my_users';
119, class User extends Eloquent {
protected $table = 'my_users';
120, class User extends Eloquent {
protected $table = 'my_users';
121, class User extends Eloquent {
protected $table = 'my_users';
122Bất cứ khi nào một mục mới được lưu lần đầu tiên, sự kiện
class User extends Eloquent {
protected $table = 'my_users';
113 và class User extends Eloquent {
protected $table = 'my_users';
114 sẽ kích hoạt. Nếu một mục không phải là mới và phương pháp class User extends Eloquent {
protected $table = 'my_users';
39 được gọi, các sự kiện class User extends Eloquent {
protected $table = 'my_users';
115 / class User extends Eloquent {
protected $table = 'my_users';
116 sẽ kích hoạt. Trong cả hai trường hợp, sự kiện class User extends Eloquent {
protected $table = 'my_users';
117 / class User extends Eloquent {
protected $table = 'my_users';
118 sẽ kích hoạtHủy lưu hoạt động thông qua sự kiện
Nếu
class User extends Eloquent {
protected $table = 'my_users';
26 được trả về từ các sự kiện class User extends Eloquent {
protected $table = 'my_users';
113, class User extends Eloquent {
protected $table = 'my_users';
115, class User extends Eloquent {
protected $table = 'my_users';
117 hoặc class User extends Eloquent {
protected $table = 'my_users';
119, thì hành động đó sẽ bị hủyclass User extends Eloquent {
protected $table = 'my_users';
01Đặt phương pháp khởi động mô hình
Các mô hình Eloquent cũng chứa một phương thức tĩnh
class User extends Eloquent {
protected $table = 'my_users';
135, có thể cung cấp một nơi thuận tiện để đăng ký các ràng buộc sự kiện của bạnclass User extends Eloquent {
protected $table = 'my_users';
02Người quan sát mô hình
Để củng cố việc xử lý các sự kiện mô hình, bạn có thể đăng ký một người quan sát mô hình. Một lớp người quan sát có thể có các phương thức tương ứng với các sự kiện mô hình khác nhau. Ví dụ: các phương thức
class User extends Eloquent {
protected $table = 'my_users';
113, class User extends Eloquent {
protected $table = 'my_users';
115, class User extends Eloquent {
protected $table = 'my_users';
117 có thể nằm trên một người quan sát, ngoài bất kỳ tên sự kiện mô hình nào khácVì vậy, ví dụ, một người quan sát mô hình có thể trông như thế này
class User extends Eloquent {
protected $table = 'my_users';
03Bạn có thể đăng ký một phiên bản người quan sát bằng phương pháp
class User extends Eloquent {
protected $table = 'my_users';
139class User extends Eloquent {
protected $table = 'my_users';
04Chuyển đổi sang mảng/JSON
Chuyển đổi một mô hình thành một mảng
Khi xây dựng API JSON, bạn có thể thường cần chuyển đổi các mô hình và mối quan hệ của mình thành mảng hoặc JSON. Vì vậy, Eloquent bao gồm các phương pháp để làm như vậy. Để chuyển đổi một mô hình và mối quan hệ được tải của nó thành một mảng, bạn có thể sử dụng phương thức
class User extends Eloquent {
protected $table = 'my_users';
140class User extends Eloquent {
protected $table = 'my_users';
05Lưu ý rằng toàn bộ bộ sưu tập mô hình cũng có thể được chuyển đổi thành mảng
class User extends Eloquent {
protected $table = 'my_users';
06Chuyển đổi một mô hình thành JSON
Để chuyển đổi một mô hình thành JSON, bạn có thể sử dụng phương thức
class User extends Eloquent {
protected $table = 'my_users';
141class User extends Eloquent {
protected $table = 'my_users';
07Trả lại một mô hình từ một tuyến đường
Lưu ý rằng khi một mô hình hoặc bộ sưu tập được truyền thành một chuỗi, nó sẽ được chuyển đổi thành JSON, nghĩa là bạn có thể trả về các đối tượng Eloquent trực tiếp từ các route của ứng dụng của mình
class User extends Eloquent {
protected $table = 'my_users';
08Ẩn các thuộc tính khỏi mảng hoặc chuyển đổi JSON
Đôi khi, bạn có thể muốn giới hạn các thuộc tính được bao gồm trong mảng hoặc biểu mẫu JSON của mô hình, chẳng hạn như mật khẩu. Để làm như vậy, hãy thêm định nghĩa thuộc tính
class User extends Eloquent {
protected $table = 'my_users';
142 vào mô hình của bạnclass User extends Eloquent {
protected $table = 'my_users';
09Ghi chú. Khi ẩn các mối quan hệ, hãy sử dụng tên phương thức của mối quan hệ, không phải tên của trình truy cập động
Ngoài ra, bạn có thể sử dụng thuộc tính
class User extends Eloquent {
protected $table = 'my_users';
143 để xác định danh sách trắngclass User extends Eloquent {
protected $table = 'my_users';
10Đôi khi, bạn có thể cần thêm các thuộc tính mảng không có cột tương ứng trong cơ sở dữ liệu của mình. Để làm như vậy, chỉ cần xác định một bộ truy cập cho giá trị
class User extends Eloquent {
protected $table = 'my_users';
11Khi bạn đã tạo bộ truy cập, chỉ cần thêm giá trị vào thuộc tính
class User extends Eloquent {
protected $table = 'my_users';
144 trên mô hìnhclass User extends Eloquent {
protected $table = 'my_users';
12Khi thuộc tính đã được thêm vào danh sách
class User extends Eloquent {
protected $table = 'my_users';
144, nó sẽ được đưa vào cả dạng mảng và dạng JSON của mô hình. Các thuộc tính trong mảng class User extends Eloquent {
protected $table = 'my_users';
144 tôn trọng cấu hình class User extends Eloquent {
protected $table = 'my_users';
143 và class User extends Eloquent {
protected $table = 'my_users';
142 trên mô hình