dongliang1941 2011-02-18 08:47
浏览 37
已采纳

CakePHP:将数据库'继承'转换为应用程序模型/控制器

I am currently designing a database for a system containing a number of different user types. My schema look like this:

## Users

id INT
name VARCHAR(60)
email VARCHAR(60)

## Doctors

id INT
user_id INT
specialism VARCHAR(60)
qualification_id INT

Essentially, the Doctors table is a child of the Users table.

Now, when i'm creating my models and controllers and models in Cake, I thought it was logical to create a User model and then subclass it with a Doctor model. But this doesn't seem to work when testing with the $scaffold (the 'has one' and 'belongs to' relationships work relatively well, but this way I would not be subclassing the Users classes).

What approach would you suggest for a database designed in this way?

  • 写回答

4条回答 默认 最新

  • duankangzi766767 2011-02-18 12:03
    关注

    CakePHP is not designed for this. CakePHP uses the ActiveRecord pattern. This pattern works great when your models roughly match up with your database tables. But it breaks down when you want to set up your models in the way you are trying to do now. For your setup, you'd need something like a Data Mapper pattern (as implemented by e.g. Zend_Db).

    In your case, I would simply set up User and Docter as two separate models with a hasOne/belongsTo relation. It will be far easier to go with the Cake-ish flow than to fight it.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?