Lược đồ Symfony là gì?

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 ta

Và 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

56

dò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

57

dò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ẩu

Quay 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 OpenAPI

Tà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

3

tiề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

6

Nhiệ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

81

Nế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

  • ./bin/console doctrine:database:create

    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:schema:update --dump-sql

    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

Đố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ày

Kho 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

8

Tá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ứ ba

Ghi 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 tay

thậ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

8

Tá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

8

Vì 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

8

tiề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

1

Thô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

9

Tá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ệu

Bằ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

  • ./bin/console doctrine:schema:update --force

    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

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

60

Bạ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

61

Tá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

62

Bạ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

63

tiề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

64

Vì 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

65

Dữ 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

66

Ghi 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

611

Mộ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òng

Mặ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

67

tiề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

608

Xem 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

628

Thư 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ô-đun

Tệ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

82

Tê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ảng

Bâ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

69

Nế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

Lược đồ trong khai thác Web là gì?

Trong lập trình máy tính, lược đồ [phát âm là SKEE-mah] là tổ chức hoặc cấu trúc của cơ sở dữ liệu , trong khi trong trí tuệ nhân tạo [AI . Trước đây, hoạt động mô hình hóa dữ liệu dẫn đến một lược đồ.

Mô hình trong Symfony là gì?

Thành phần mô hình mặc định của Symfony là dựa trên lớp ánh xạ đối tượng/quan hệ . Symfony đi kèm với hai ORM PHP phổ biến nhất. Thúc đẩy và học thuyết. Trong một ứng dụng symfony, bạn truy cập dữ liệu được lưu trữ trong cơ sở dữ liệu và sửa đổi nó thông qua các đối tượng; .

Thực thể trong Symfony là gì?

Ồ, thực thể là một loại đối tượng dùng để chứa dữ liệu . Mỗi phiên bản của thực thể chứa chính xác một hàng của bảng cơ sở dữ liệu được nhắm mục tiêu. Đối với các thư mục, Symfony2 có một số kỳ vọng về nơi tìm các lớp - điều đó cũng áp dụng cho các thực thể.

Học thuyết trong Symfony là gì?

Theo mặc định, Symfony framework không cung cấp bất kỳ thành phần nào để làm việc với cơ sở dữ liệu. Tuy nhiên, nó tích hợp chặt chẽ với Doctrine ORM. Học thuyết chứa một số thư viện PHP được sử dụng để lưu trữ cơ sở dữ liệu và ánh xạ đối tượng .

Chủ Đề