Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để trở nên Laravel hơn trong ứng dụng CRUD?

Có vẻ như bạn đang thiết lập một quan hệ đa hình, trong trường hợp đó, tôi sẽ làm cho mọi thứ riêng biệt có nghĩa là bạn sẽ có một mô hình cho Cat, Dog, Turtle và PetData. Bạn sẽ có bộ điều khiển cho CatController, DogController và TurtleController. Và bạn sẽ có biểu mẫu Mèo, biểu mẫu Chó và biểu mẫu Rùa, mỗi biểu mẫu cũng chứa đầu vào cho dữ liệu bạn yêu cầu cho bảng pet_info của mình.

Để tạo quan hệ đa hình, bảng pet_data của bạn sẽ yêu cầu một số thay đổi. Chỉ cần thay đổi cột của bảng thành pet_type . Laravel mong đợi một tên nhất định cho cột này và nội dung của nó là tên của một mô hình chứ không phải là tên của bảng của bạn.

Việc thiết lập các mô hình cho những thứ này rất dễ dàng, tôi sẽ thực hiện phần PetData và Dog để bắt đầu.

class Dog extends Eloquent 
{
    protected $table = 'dogs_data';
    protected $timestamps = false;

    public function petData()
    {
        return $this->morphMany('PetData', 'pet');
    }
}

class PetData extends Eloquent
{
    protected $timestamps = false;

    public function pet()
    {
        return $this->morphTo();
    }
}

Có thể đọc thêm về điều này tại đây ... http://laravel.com/docs/eloquent# quan hệ đa hình

Ý tưởng về việc có các mô hình / bộ điều khiển riêng biệt cho mọi thứ có vẻ tốn nhiều công sức, nhưng nó sẽ đi một chặng đường dài khi cố gắng duy trì hoặc thêm động vật bổ sung vào ứng dụng của bạn vì bạn hiếm khi phải sửa đổi mã sản xuất, làm mất khả năng giới thiệu nhiều lỗi hơn khi cố gắng thêm các cải tiến vào trang web của bạn.

Giờ đây, việc lưu thú cưng và dữ liệu liên quan đến thú cưng trở nên rất dễ dàng mà không phải lo lắng về pet_id và pet_type trong bảng pet_data, Laravel sẽ giải quyết việc đó cho bạn. Chức năng trên bộ điều khiển chó của bạn có thể trông giống như thế này ...

class DogController extends BaseController
{
    public function save()
    {
        $dog = new Dog;
        $dog->name = Input::get('name');
        $dog->age = Input::get('age');
        $dog->save();

        $pet_data = new PetData;
        $pet_data->color = Input::get('color');
        $dog->petData()->save($pet_data);
    }
}

Đối với việc tạo một bộ điều khiển khác cho quản trị viên, tôi sẽ nói có, hãy làm điều đó. Sẽ không bao giờ phiền khi giữ các phần của trang web mà bạn cho là khác nhau trong các tệp khác nhau. Nó không chỉ giúp ích cho việc tổ chức, mà một lần nữa, giúp tách rời các mối quan tâm mà bạn có thể nên đọc thêm.

Ngoài ra còn có một số tùy chọn tuyệt vời của bên thứ 3 để quản lý các vai trò. Tôi đã sử dụng zizaco/entrust trước đây và thấy nó rất dễ quản lý. Nó có thể giúp cuộc sống của bạn dễ dàng hơn rất nhiều khi cố gắng quản lý những người có thể làm những gì trên ứng dụng web của bạn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn Nodejs JOIN:định dạng đầu ra JSON

  2. Làm cách nào để chèn Datas vào Winform TreeView (C #) trong mã hóa hiệu quả?

  3. Tôi cần tìm và thay thế \ n trong trường mysql

  4. chèn dữ liệu được thu thập dưới dạng Khóa ngoại và SQLSTATE [23000]:Vi phạm ràng buộc toàn vẹn:1048

  5. Nhóm các bài đăng theo ngày trong Wordpress