如何定义与cakePHP的关系?

时间:2014-10-20 17:59:13

标签: mysql cakephp cakephp-model

我已经读过关于对流的内容,我的应用程序/数据库是直接的。

我也读过$ hasOne,$ hasMany,$ belongsTo等等

但是,我面临一个我无法为自己解决的问题/问题。

我的模特:汽车,赛事,加油,维修 我的控制器:CarsController

我的关系:

class Car extends AppModel {
    public $BelongsTo = array('User');
    public $hasMany = array('Event');
}

class Event extends AppModel {
    public $BelongsTo = array('Car');
    public $hasOne = array('Refuel');
}

class Refuel extends AppModel {
    public $BelongsTo = array('Event');
}

从CarsController发送的find()的输出

array(
    'Car' => array(
        'id' => '1',
        'user_id' => '1',
        'make' => 'Make',
        'model' => 'Model',
    ),
    'Event' => array(
        (int) 0 => array(
            'id' => '1',
            'car_id' => '1',
            'dateEvent' => '20-10-2014',
            'description' => '1'
        ),
        (int) 1 => array(
            'id' => '2',
            'car_id' => '1',
            'dateEvent' => '20-10-2014',
            'description' => '2'
        ),
        (int) 2 => array(
            'id' => '3',
            'car_id' => '1',
            'dateEvent' => '20-10-2014',
            'description' => '3'
        )
    )
)

你需要知道这一点:
汽车属于用户。用户可能有很多车 汽车有很多活动。一个活动只有一辆车。
每个事件应该与一个加油或一个维修相关联。加油或维修不能关联多个事件。

表格

用户:id
cars:id,user_id
事件:id,car_id
加油:id,event_id(唯一)
修理:id,event_id(唯一)

  1. 我是否定义好关系?
  2. 如何在cakePHP,特殊活动 - 加油和活动修理中表达?

2 个答案:

答案 0 :(得分:0)

你错过了

class User extends AppModel {
    public $hasMany = array('Car');
}

答案 1 :(得分:-1)

我发现数组('递归' => 2)解决了这个问题!

但是这是什么以及为什么?