Chúng tôi đã mô tả bảng
./bin/console doctrine:database:create
54 cho Doctrine thông qua chú thích, nhưng bảng này chưa tồn tại. Đừng lo lắng - Doctrine có thể tạo ra nó cho chúng taVà trên thực tế, chúng tôi thậm chí còn chưa có cơ sở dữ liệu. Học thuyết cũng có thể xử lý việc này. Đi đến thiết bị đầu cuối sử dụng bàn điều khiển để chạy
./bin/console doctrine:database:create
Nhưng đợi đã. Doctrine có thể làm được điều này chưa? . không phải tên chúng tôi muốn, người dùng hoặc mật khẩu
Chúng ta làm điều đó ở đâu? .
./bin/console doctrine:database:create
55. Cuộn xuống phím ./bin/console doctrine:database:create
56dòng 1 - 43học thuyết. dbal. người lái xe. pdo_mysqlhost. Cổng "%database_host%". "%database_port%"tên db. "%database_name%"người dùng. "%database_user%"mật khẩu. bộ ký tự "%database_password%". UTF8. dòng 60 - 72
À, đây là thứ cho Doctrine biết tất cả về kết nối cơ sở dữ liệu của bạn
Tuy nhiên, thông tin không được mã hóa cứng ở đây - đây là những tham chiếu đến các tham số được xác định trong
./bin/console doctrine:database:create
57dòng 1 - 3 tham số. cơ sở dữ liệu_host. 127. 0. 0. 1cơ sở dữ liệu_port. ~database_name. người dùng cơ sở dữ liệu symfony. rootdatabase_password. ~. dòng 12 - 15
Cập nhật
./bin/console doctrine:database:create
58 thành ./bin/console doctrine:database:create
59 và trên máy cục bộ siêu an toàn của tôi, người dùng cơ sở dữ liệu là ./bin/console doctrine:database:create
0 không có mật khẩuQuay lại thiết bị đầu cuối. Bây giờ nhấn enter vào lệnh
./bin/console doctrine:database:create
Cơ sở dữ liệu đã tạo. Để tạo bảng, hãy chạy
./bin/console doctrine:schema:update --dump-sql
Điều này trông thật tuyệt -
./bin/console doctrine:database:create
1 với hai cột. Nhưng điều này vẫn chưa thực hiện truy vấn - tùy chọn ./bin/console doctrine:database:create
2 được sử dụng để xem trước truy vấn nếu bạn tò mò. Thay thế nó bằng ./bin/console doctrine:database:create
3./bin/console doctrine:schema:update --force
Vì vậy, này các bạn, điều này thực sự thú vị - chúng ta có thể hoàn toàn lười biếng và để Doctrine thực hiện tất cả công việc nâng cấp cơ sở dữ liệu nặng nề cho chúng ta. Lệnh
./bin/console doctrine:database:create
4 này thực sự mạnh mẽ hơn vẻ ngoài của nó - nó sẽ khiến chúng ta "wow" trong vài phút nữa ./bin/console doctrine:database:create
60 là một phần công cụ dòng lệnh của khung Nền tảng API giúp tạo ngay một tập hợp các lớp PHP từ các từ vựng, chẳng hạn như [nhưng không giới hạn ở] Lược đồ. org hoặc ActivityStreams hoặc từ tài liệu OpenAPITài liệu
- Giới thiệu
- Bắt đầu
- Cấu hình
Tín dụng
Dự án này được tạo ra bởi Kévin Dunglas và được tài trợ bởi Les-Tilleuls. chuồng
Những ai muốn mở trình soạn thảo văn bản của mình và đặt một số PHP sẽ rất vui khi biết hướng dẫn hôm nay sẽ đưa chúng ta vào một số bước phát triển. Chúng tôi sẽ xác định mô hình dữ liệu Jobeet, sử dụng ORM để tương tác với cơ sở dữ liệu và xây dựng mô-đun đầu tiên của ứng dụng. Nhưng vì symfony đã làm rất nhiều việc cho chúng ta, nên chúng ta sẽ có một mô-đun web đầy đủ chức năng mà không cần viết quá nhiều mã PHP
Mô hình quan hệ
Những câu chuyện của người dùng mà chúng tôi đã viết ngày hôm qua mô tả các đối tượng chính của dự án của chúng tôi. công việc, chi nhánh và danh mục. Đây là sơ đồ mối quan hệ thực thể tương ứng
Ngoài các cột được mô tả trong các câu chuyện, chúng tôi cũng đã thêm trường
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********3 vào một số bảng. Symfony nhận ra các trường như vậy và đặt giá trị thành thời gian hệ thống hiện tại khi bản ghi được tạo. Điều đó cũng tương tự đối với các trường
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********4. Giá trị của chúng được đặt thành thời gian hệ thống bất cứ khi nào bản ghi được cập nhật
lược đồ
Để lưu trữ các công việc, chi nhánh và danh mục, rõ ràng chúng ta cần một cơ sở dữ liệu quan hệ
Nhưng vì symfony là một framework Hướng đối tượng, chúng tôi muốn thao tác với các đối tượng bất cứ khi nào có thể. Ví dụ, thay vì viết các câu lệnh SQL để truy xuất các bản ghi từ cơ sở dữ liệu, chúng tôi muốn sử dụng các đối tượng hơn.
Thông tin cơ sở dữ liệu quan hệ phải được ánh xạ tới một mô hình đối tượng. Điều này có thể được thực hiện với một công cụ ORM và may mắn thay, symfony đi kèm với hai trong số chúng. Thúc đẩy và học thuyết. Trong hướng dẫn này, chúng tôi sẽ sử dụng Propel
ORM cần mô tả về các bảng và mối quan hệ của chúng để tạo các lớp liên quan. Có hai cách để tạo lược đồ mô tả này. bằng cách xem xét cơ sở dữ liệu hiện có hoặc bằng cách tạo nó bằng tay
Ghi chú
Một số công cụ cho phép bạn xây dựng cơ sở dữ liệu bằng đồ họa [ví dụ Dbdesigner của Fabforce] và tạo trực tiếp một
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********5 [với DB Designer 4 TO Propel Schema Converter]
Vì cơ sở dữ liệu chưa tồn tại và vì chúng tôi muốn giữ cho cơ sở dữ liệu Jobeet bất khả tri, hãy tạo tệp lược đồ bằng tay bằng cách chỉnh sửa tệp
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********6 trống
./bin/console doctrine:database:create
3tiền boa
Nếu bạn đã quyết định tạo các bảng bằng cách viết câu lệnh SQL, bạn có thể tạo tệp cấu hình
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********7 tương ứng bằng cách chạy tác vụ
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********8
./bin/console doctrine:database:create
6Nhiệm vụ trên yêu cầu bạn phải có cơ sở dữ liệu được định cấu hình trong
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********9. Chúng tôi chỉ cho bạn cách định cấu hình cơ sở dữ liệu ở bước sau. Nếu bạn thử và chạy tác vụ này ngay bây giờ, nó sẽ không hoạt động vì nó không biết cơ sở dữ liệu nào để xây dựng lược đồ
Lược đồ là bản dịch trực tiếp của sơ đồ mối quan hệ thực thể ở định dạng YAML
thanh bên
Định dạng YAML
Theo trang web chính thức của YAML, YAML là "tiêu chuẩn tuần tự hóa dữ liệu thân thiện với con người cho tất cả các ngôn ngữ lập trình"
Nói cách khác, YAML là một ngôn ngữ đơn giản để mô tả dữ liệu [chuỗi, số nguyên, ngày tháng, mảng và giá trị băm]
Trong YAML, cấu trúc được hiển thị thông qua thụt đầu dòng, các mục trình tự được biểu thị bằng dấu gạch ngang và các cặp khóa/giá trị trong bản đồ được phân tách bằng dấu hai chấm. YAML cũng có một cú pháp tốc ký để mô tả cùng một cấu trúc với ít dòng hơn, trong đó các mảng được hiển thị rõ ràng với
./bin/console doctrine:database:create
80 và các giá trị băm với ./bin/console doctrine:database:create
81Nếu bạn chưa quen với YAML, đã đến lúc bắt đầu vì symfony framework sử dụng nó rộng rãi cho các tệp cấu hình của nó
Có một điều quan trọng bạn cần nhớ khi chỉnh sửa tệp YAML. thụt đầu dòng phải được thực hiện với một hoặc nhiều khoảng trắng, nhưng không bao giờ với bảng
Tệp
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********7 chứa mô tả của tất cả các bảng và các cột của chúng. Mỗi cột được mô tả với các thông tin sau
83. Loại cột [./bin/console doctrine:database:create
84,./bin/console doctrine:database:create
85,./bin/console doctrine:database:create
86,./bin/console doctrine:database:create
87,./bin/console doctrine:database:create
88,./bin/console doctrine:database:create
89,./bin/console doctrine:database:create
80,./bin/console doctrine:database:create
81,./bin/console doctrine:database:create
82,./bin/console doctrine:database:create
83,./bin/console doctrine:database:create
84,./bin/console doctrine:database:create
85,./bin/console doctrine:database:create
86,./bin/console doctrine:database:create
87,./bin/console doctrine:database:create
88,./bin/console doctrine:database:create
89, and./bin/console doctrine:database:create
80]./bin/console doctrine:schema:update --dump-sql
81. Đặt nó thành./bin/console doctrine:schema:update --dump-sql
82 nếu bạn muốn cột được yêu cầu./bin/console doctrine:schema:update --dump-sql
83. Đặt thành./bin/console doctrine:schema:update --dump-sql
82 nếu bạn muốn tạo chỉ mục cho cột hoặc thành./bin/console doctrine:schema:update --dump-sql
85 nếu bạn muốn tạo chỉ mục duy nhất trên cột./bin/console doctrine:schema:update --dump-sql
86. Xác định một cột làm khóa chính cho bảng./bin/console doctrine:schema:update --dump-sql
87,./bin/console doctrine:schema:update --dump-sql
88. Xác định một cột là khóa ngoại cho một bảng khác./bin/console doctrine:schema:update --dump-sql
Đối với các cột được đặt thành
./bin/console doctrine:schema:update --dump-sql
89, có nghĩa là ./bin/console doctrine:database:create
80 trong YAML [./bin/console doctrine:database:create
81, $ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********3 và
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********4], symfony sẽ đoán cấu hình tốt nhất [khóa chính cho
./bin/console doctrine:database:create
81 và dấu thời gian cho $ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********3 và
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********4]
Ghi chú
Thuộc tính
./bin/console doctrine:database:create
87 xác định hành vi ./bin/console doctrine:database:create
88 của khóa ngoại và Propel hỗ trợ ./bin/console doctrine:database:create
89, ./bin/console doctrine:database:create
80 và ./bin/console doctrine:database:create
81. Chẳng hạn, khi một bản ghi ./bin/console doctrine:database:create
82 bị xóa, tất cả các bản ghi liên quan đến ./bin/console doctrine:database:create
83 sẽ bị cơ sở dữ liệu hoặc Propel tự động xóa nếu công cụ cơ bản không hỗ trợ chức năng nàyKho dữ liệu
symfony framework hỗ trợ tất cả các cơ sở dữ liệu hỗ trợ PDO [MySQL, PostgreSQL, SQLite, Oracle, MSSQL,. ]. PDO là lớp trừu tượng hóa cơ sở dữ liệu đi kèm với PHP
Hãy sử dụng MySQL cho hướng dẫn này
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********
Ghi chú
Vui lòng chọn một công cụ cơ sở dữ liệu khác nếu bạn muốn. Sẽ không khó để điều chỉnh mã chúng tôi sẽ viết vì chúng tôi sẽ sử dụng ORM sẽ viết SQL cho chúng tôi
Chúng ta cần yêu cầu symfony sử dụng cơ sở dữ liệu này cho dự án Jobeet
./bin/console doctrine:database:create
8Tác vụ
./bin/console doctrine:database:create
84 có ba đối số. PDO DSN, tên người dùng và mật khẩu để truy cập cơ sở dữ liệu. Nếu bạn không cần mật khẩu để truy cập cơ sở dữ liệu của mình trên máy chủ phát triển, chỉ cần bỏ qua đối số thứ baGhi chú
Tác vụ
./bin/console doctrine:database:create
84 lưu trữ cấu hình cơ sở dữ liệu vào tệp cấu hình ./bin/console doctrine:database:create
86. Thay vì sử dụng tác vụ, bạn có thể chỉnh sửa tệp này bằng taythận trọng
Truyền mật khẩu cơ sở dữ liệu trên dòng lệnh thuận tiện nhưng không an toàn. Tùy thuộc vào người có quyền truy cập vào môi trường của bạn, tốt hơn bạn nên chỉnh sửa
./bin/console doctrine:database:create
86 để thay đổi mật khẩu. Tất nhiên, để giữ an toàn cho mật khẩu, chế độ truy cập tệp cấu hình cũng nên được hạn chếORM
Nhờ mô tả cơ sở dữ liệu từ tệp
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********7, chúng tôi có thể sử dụng một số tác vụ tích hợp sẵn của Propel để tạo các câu lệnh SQL cần thiết để tạo các bảng cơ sở dữ liệu
./bin/console doctrine:database:create
8Tác vụ
./bin/console doctrine:database:create
89 tạo các câu lệnh SQL trong thư mục ./bin/console doctrine:schema:update --force
10, được tối ưu hóa cho công cụ cơ sở dữ liệu mà chúng tôi đã định cấu hình./bin/console doctrine:schema:update --dump-sql
8Để thực sự tạo các bảng trong cơ sở dữ liệu, bạn cần chạy tác vụ
./bin/console doctrine:schema:update --force
11./bin/console doctrine:database:create
8Vì nhiệm vụ loại bỏ các bảng hiện tại trước khi tạo lại chúng, bạn được yêu cầu xác nhận thao tác. Bạn cũng có thể thêm tùy chọn
./bin/console doctrine:schema:update --force
12 để bỏ qua câu hỏi, điều này hữu ích nếu bạn muốn chạy tác vụ từ trong một lô không tương tác./bin/console doctrine:database:create
8tiền boa
Đối với bất kỳ công cụ dòng lệnh nào, các tác vụ của symfony có thể nhận các đối số và tùy chọn. Mỗi tác vụ đi kèm với một thông báo trợ giúp tích hợp có thể được hiển thị bằng cách chạy tác vụ
./bin/console doctrine:schema:update --force
13./bin/console doctrine:schema:update --force
1Thông báo trợ giúp liệt kê tất cả các đối số và tùy chọn có thể có, đưa ra các giá trị mặc định cho từng đối số và cung cấp một số ví dụ sử dụng hữu ích
ORM cũng tạo ra các lớp PHP ánh xạ các bản ghi bảng tới các đối tượng
./bin/console doctrine:schema:update --force
9Tác vụ
./bin/console doctrine:schema:update --force
14 tạo các tệp PHP trong thư mục ./bin/console doctrine:schema:update --force
15 có thể được sử dụng để tương tác với cơ sở dữ liệuBằng cách duyệt các tệp được tạo, bạn có thể nhận thấy rằng Propel tạo bốn lớp trên mỗi bảng. Đối với bảng
./bin/console doctrine:schema:update --force
16
17. Một đối tượng của lớp này đại diện cho một bản ghi của bảng./bin/console doctrine:schema:update --force
16. Lớp trống theo mặc định./bin/console doctrine:schema:update --force
19. Lớp cha của./bin/console doctrine:schema:update --force
17. Mỗi lần bạn chạy./bin/console doctrine:schema:update --force
14, lớp này sẽ bị ghi đè, vì vậy tất cả các tùy chỉnh phải được thực hiện trong lớp./bin/console doctrine:schema:update --force
17./bin/console doctrine:schema:update --force
93. Lớp định nghĩa các phương thức tĩnh chủ yếu trả về các bộ sưu tập đối tượng./bin/console doctrine:schema:update --force
17. Lớp trống theo mặc định./bin/console doctrine:schema:update --force
95. Lớp cha của./bin/console doctrine:schema:update --force
93. Mỗi khi bạn chạy./bin/console doctrine:schema:update --force
14, lớp này sẽ bị ghi đè, vì vậy tất cả các tùy chỉnh phải được thực hiện trong lớp./bin/console doctrine:schema:update --force
93./bin/console doctrine:schema:update --force
Các giá trị cột của một bản ghi có thể được thao tác với một đối tượng mô hình bằng cách sử dụng một số bộ truy cập [phương thức
./bin/console doctrine:schema:update --force
99] và bộ biến đổi [phương thức ./bin/console doctrine:database:create
600]./bin/console doctrine:database:create
60Bạn cũng có thể xác định trực tiếp các khóa ngoại bằng cách liên kết các đối tượng với nhau
./bin/console doctrine:database:create
61Tác vụ
./bin/console doctrine:database:create
601 là lối tắt cho các tác vụ chúng tôi đã chạy trong phần này và một số tác vụ khác. Vì vậy, hãy chạy tác vụ này ngay bây giờ để tạo các biểu mẫu và trình xác thực cho các lớp mô hình Jobeet./bin/console doctrine:database:create
62Bạn sẽ thấy trình xác thực hoạt động vào cuối ngày và các biểu mẫu sẽ được giải thích rất chi tiết vào ngày 10
Như bạn sẽ thấy sau này, symfony tự động tải các lớp PHP cho bạn, điều đó có nghĩa là bạn không bao giờ cần sử dụng _____1602 trong mã của mình. Đó là một trong vô số thứ mà symfony tự động hóa cho nhà phát triển nhưng có một nhược điểm. bất cứ khi nào bạn thêm một lớp mới, bạn cần xóa bộ nhớ cache của symfony. Vì
./bin/console doctrine:schema:update --force
14 đã tạo ra rất nhiều lớp mới, hãy xóa bộ đệm./bin/console doctrine:database:create
63tiền boa
Một tác vụ symfony được tạo bởi một không gian tên và một tên tác vụ. Mỗi cái có thể được rút ngắn tối đa để không bị nhập nhằng với các tác vụ khác. Vì vậy, các lệnh sau tương đương với
./bin/console doctrine:database:create
604./bin/console doctrine:database:create
64Vì tác vụ
./bin/console doctrine:database:create
604 được sử dụng phổ biến nên nó thậm chí còn có một từ viết tắt cố định ngắn hơn./bin/console doctrine:database:create
65Dữ liệu ban đầu
Các bảng đã được tạo trong cơ sở dữ liệu nhưng không có dữ liệu trong đó. Đối với bất kỳ ứng dụng web nào, có ba loại dữ liệu
Dữ liệu ban đầu. Dữ liệu ban đầu là cần thiết để ứng dụng hoạt động. Ví dụ: Jobeet cần một số danh mục ban đầu. Nếu không, sẽ không ai có thể gửi một công việc. Chúng tôi cũng cần một người dùng quản trị để có thể đăng nhập vào phần phụ trợ
dữ liệu thử nghiệm. Dữ liệu thử nghiệm là cần thiết để ứng dụng được thử nghiệm. Là một nhà phát triển, bạn sẽ viết các bài kiểm tra để đảm bảo rằng Jobeet hoạt động như được mô tả trong câu chuyện của người dùng và cách tốt nhất là viết các bài kiểm tra tự động. Vì vậy, mỗi khi bạn chạy thử nghiệm, bạn cần có một cơ sở dữ liệu sạch với một số dữ liệu mới để thử nghiệm
Dữ liệu người dùng. Dữ liệu người dùng được tạo bởi người dùng trong quá trình hoạt động bình thường của ứng dụng
Mỗi khi symfony tạo các bảng trong cơ sở dữ liệu, tất cả dữ liệu sẽ bị mất. Để điền vào cơ sở dữ liệu một số dữ liệu ban đầu, chúng ta có thể tạo tập lệnh PHP hoặc thực thi một số câu lệnh SQL bằng chương trình
./bin/console doctrine:database:create
606. Nhưng vì nhu cầu khá phổ biến, nên có một cách tốt hơn với symfony. tạo các tệp YAML trong thư mục ./bin/console doctrine:database:create
607 và sử dụng tác vụ ./bin/console doctrine:database:create
608 để tải chúng vào cơ sở dữ liệuĐầu tiên, tạo các tệp cố định sau
./bin/console doctrine:database:create
66Ghi chú
Tệp cố định công việc tham chiếu hai hình ảnh. Bạn có thể tải xuống [
./bin/console doctrine:database:create
609, ./bin/console doctrine:database:create
610] và đặt chúng trong thư mục ./bin/console doctrine:database:create
611Một tệp đồ đạc được viết bằng YAML và xác định các đối tượng mô hình, được gắn nhãn bằng một tên duy nhất [ví dụ: chúng tôi đã xác định hai công việc có nhãn là
./bin/console doctrine:database:create
612 và ./bin/console doctrine:database:create
613]. Nhãn này được sử dụng rất tốt để liên kết các đối tượng liên quan mà không cần phải xác định khóa chính [thường được tăng tự động và không thể đặt]. Chẳng hạn, danh mục công việc ./bin/console doctrine:database:create
612 là ./bin/console doctrine:database:create
615, là nhãn được đặt cho danh mục 'Lập trình'tiền boa
Trong tệp YAML, khi một chuỗi chứa dấu ngắt dòng [chẳng hạn như cột
./bin/console doctrine:database:create
616 trong tệp cố định công việc], bạn có thể sử dụng dấu gạch ngang [./bin/console doctrine:database:create
617] để chỉ ra rằng chuỗi sẽ kéo dài trên nhiều dòngMặc dù tệp lịch thi đấu có thể chứa các đối tượng từ một hoặc một số mô hình, chúng tôi đã quyết định tạo một tệp cho mỗi mô hình cho đồ đạc Jobeet
tiền boa
Lưu ý các số tiền tố tên tệp. Đây là một cách đơn giản để kiểm soát thứ tự tải dữ liệu. Sau này trong dự án, nếu chúng ta cần chèn một số tệp cố định mới, sẽ dễ dàng vì chúng ta có một số số trống giữa các tệp hiện có
Trong tệp cố định, bạn không cần xác định tất cả các giá trị cột. Nếu không, symfony sẽ sử dụng giá trị mặc định được xác định trong lược đồ cơ sở dữ liệu. Và khi symfony sử dụng Propel để tải dữ liệu vào cơ sở dữ liệu, tất cả các hành vi tích hợp sẵn [như tự động thiết lập các cột
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********3 hoặc
$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********4] và các hành vi tùy chỉnh mà bạn có thể đã thêm vào các lớp mô hình đều được kích hoạt
Tải dữ liệu ban đầu vào cơ sở dữ liệu đơn giản như chạy tác vụ
./bin/console doctrine:database:create
608./bin/console doctrine:database:create
67tiền boa
Tác vụ
./bin/console doctrine:database:create
621 là lối tắt cho tác vụ ./bin/console doctrine:database:create
601 theo sau là tác vụ ./bin/console doctrine:database:create
608Xem nó trong Hành động trong Trình duyệt
Chúng tôi đã sử dụng giao diện dòng lệnh rất nhiều nhưng điều đó không thực sự thú vị, đặc biệt là đối với một dự án web. Bây giờ chúng tôi có mọi thứ chúng tôi cần để tạo các trang Web tương tác với cơ sở dữ liệu
Hãy xem cách hiển thị danh sách công việc, cách chỉnh sửa công việc hiện có và cách xóa công việc. Như đã giải thích trong ngày đầu tiên, một dự án symfony được tạo ra từ các ứng dụng. Mỗi ứng dụng được chia thành các mô-đun. Mô-đun là một bộ mã PHP độc lập đại diện cho một tính năng của ứng dụng [ví dụ: mô-đun API] hoặc một tập hợp các thao tác mà người dùng có thể thực hiện trên một đối tượng mô hình [ví dụ: mô-đun công việc]
Symfony có thể tự động tạo mô-đun cho một mô hình nhất định cung cấp các tính năng thao tác cơ bản
./bin/console doctrine:database:create
68./bin/console doctrine:database:create
624 tạo mô-đun ./bin/console doctrine:database:create
82 trong ứng dụng ./bin/console doctrine:database:create
626 cho kiểu máy ./bin/console doctrine:schema:update --force
17. Như với hầu hết các tác vụ của symfony, một số tệp và thư mục đã được tạo cho bạn trong thư mục ./bin/console doctrine:database:create
628Thư mục Mô tả./bin/console doctrine:database:create
629Các hành động của mô-đun./bin/console doctrine:database:create
630Các mẫu mô-đunTệp
./bin/console doctrine:database:create
631 xác định tất cả hành động có sẵn cho mô-đun ./bin/console doctrine:database:create
82Tên hành động Mô tả./bin/console doctrine:database:create
633Hiển thị các bản ghi của bảng./bin/console doctrine:database:create
634Hiển thị các trường và giá trị của chúng cho một bản ghi đã cho./bin/console doctrine:database:create
635Hiển thị một biểu mẫu để tạo một bản ghi mới./bin/console doctrine:database:create
636Tạo một bản ghi mới./bin/console doctrine:database:create
637Hiển thị một biểu mẫu để chỉnh sửa một bản ghi hiện có./bin/console doctrine:database:create
638Cập nhật một bản ghi theo các giá trị do người dùng gửi./bin/console doctrine:database:create
639Xóa một bản ghi đã cho khỏi bảngBây giờ bạn có thể kiểm tra mô-đun công việc trong trình duyệt
./bin/console doctrine:database:create
69Nếu bạn cố gắng chỉnh sửa một công việc, bạn sẽ có một ngoại lệ vì symfony cần một văn bản đại diện cho một hạng mục. Một biểu diễn đối tượng PHP có thể được xác định bằng phương thức ma thuật PHP
./bin/console doctrine:database:create
640. Biểu diễn văn bản của bản ghi danh mục phải được xác định trong lớp mô hình ./bin/console doctrine:database:create
641$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********0
Bây giờ, mỗi khi symfony cần một văn bản đại diện cho một danh mục, nó sẽ gọi phương thức
./bin/console doctrine:database:create
640 để trả về tên danh mục. Vì chúng ta sẽ cần một biểu diễn văn bản của tất cả các lớp mô hình vào lúc này hay lúc khác, hãy định nghĩa một phương thức ./bin/console doctrine:database:create
640 cho mọi lớp mô hình$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********1
Bây giờ bạn có thể tạo và chỉnh sửa công việc. Cố gắng để trống trường bắt buộc hoặc cố gắng nhập ngày không hợp lệ. Đúng vậy, symfony đã tạo ra các quy tắc xác thực cơ bản bằng cách xem xét bên trong lược đồ cơ sở dữ liệu
Hẹn gặp bạn vào ngày mai
Đó là tất cả cho ngày hôm nay. Tôi đã cảnh báo bạn trong phần giới thiệu. Ngày nay, chúng tôi hầu như không viết mã PHP nhưng chúng tôi có một mô-đun web đang hoạt động cho mô hình công việc, sẵn sàng để điều chỉnh và tùy chỉnh. Hãy nhớ rằng, không có mã PHP cũng có nghĩa là không có lỗi
Nếu bạn vẫn còn chút năng lượng, vui lòng đọc mã được tạo cho mô-đun và mô hình và cố gắng hiểu cách thức hoạt động của nó. Nếu không, đừng lo lắng và hãy ngủ ngon, vì ngày mai, chúng ta sẽ nói về một trong những mô hình được sử dụng nhiều nhất trong các khung công tác web, mẫu thiết kế MVC
Đối với bất kỳ ngày nào khác, mã của ngày hôm nay có sẵn trên kho SVN của Jobeet. Kiểm tra thẻ
./bin/console doctrine:database:create
644$ mysqladmin -uroot -p create jobeet Enter password: mYsEcret ## The password will echo as ********2
Trang trước Ngày 2. Dự án
Trang tiếp theo Ngày 4. Bộ điều khiển và Chế độ xem
Tác phẩm này được cấp phép theo Creative Commons Ghi công-Chia sẻ tương tự 3. 0 Giấy phép chưa chuyển đổi giấy phép