Tệp Modelname.class.php của bạn giữ lớp chứa, ví dụ như Đăng. Lớp này có tất cả các phương thức và thuộc tính của một hàng trong bảng của bạn, ví dụ như bảng Post. Nếu bạn có các cột trong bảng như id, văn bản, v.v., bạn sẽ có thể truy cập chúng thông qua lớp Post.
Tuy nhiên, lớp PostTable của bạn (hoặc lớp XxxxxTable) là tham chiếu bảng, có nghĩa là lớp này phải chịu trách nhiệm truy vấn bảng để tìm nạp dữ liệu.
Hãy để tôi đưa ra một ví dụ ngắn gọn. Cho phép nói rằng bạn muốn rút ra một bài duy nhất từ bảng và sau đó chỉnh sửa đó.
Trước tiên, bạn sẽ làm như $post = Doctrine::getTable('Post')->findOneById(1);
Điều này được thực hiện từ lớp bảng vì bạn sẽ muốn lấy ra một số dữ liệu từ một bảng cụ thể.
Bây giờ bạn có bài đăng của mình (như trong đối tượng Bài đăng), bởi vì ->findOneById(...)
đã truy vấn cơ sở dữ liệu cho bạn. Sau đó, bạn có thể chỉnh sửa điều đó, ví dụ: $post->title = "a nice title"
. Cuối cùng, lưu bài đăng của bạn với $post->save();
.
Trường hợp ngoại lệ cho điều này là khi bạn muốn tìm nạp các đối tượng liên quan, ví dụ như có thể là câu trả lời cho bài đăng của bạn. Điều này sẽ được thực hiện thông qua đối tượng bạn đã kéo ra $post
.
Tôi hy vọng tôi đã làm rõ vấn đề của mình - nếu không, vui lòng không ngần ngại đặt thêm câu hỏi.
Điều này rất giống với: http: //stackoverflow.com/questions/11714387/choosing-between-symfonys-doctrine-orm-files-model-class-php-and-modeltable-cla/11729994#11729994 – Omn