Cakephp多层次关系

时间:2017-01-13 05:58:53

标签: php mysql cakephp

我有四张桌子

course_schedules

id name

course_prices

id price currency_id

price_schedules

id course_schedule_id course_price_id

货币

id name code
  1. 课程表模型有很多价格表

  2. 课程价格有很多价格表

  3. 课程价格属于货币

  4. 价格表属于课程表

  5. 价格表属于课程价格

  6. 货币有很多课程价格

  7. 现在所有这些事情都运转良好,但我的问题是

    在PriceSchedulesController中

    我可以获得course_schedules表详细信息course_prices表详细信息

    但我也希望获得货币代码以及200美元的价格     这意味着price_schedules间接依赖货币

    这种关系有任何技术

    public function index() {
        $this->PriceSchedule->recursive = 0;
        $this->set('PriceSchedules', $this->Paginator->paginate());
    }
    

    结果

    Array
    (
        [CourseSchedule] => Array
            (
                [id] => 1
                [name] => course one
            )
        [CoursePrice] => Array
            (
                [id] => 2
                [currency_id] => 1
                [price] => 200
            )
    )
    

    你可以在数组中看到currency_id有,但是如200美元的货币代码

1 个答案:

答案 0 :(得分:1)

根据您的关系,您的price_schedules表已经与Currency相关:

1.price_schedules belongs to course_price
2.course_price belongs to currency
3.hence price_schedule also dependent on currency

当您检索数据时,您需要使用包含良好的数据,例如:

public function index() {
  // $this->PriceSchedule->recursive = 0;
  $this->paginate = [
     'contain'=>['CoursePrice.Currency'] // using contain this way you can easiy get that
  ];
  $this->set('PriceSchedules', $this->Paginator->paginate());
}

或者你也可以通过递归属性来做到这一点:

$this->PriceSchedule->recursive = 2;// this will retrieve all the related models