CakePHP和Containable

时间:2011-07-13 00:10:27

标签: cakephp controller models containable

首先我要说的是,我已尽可能多地阅读CakePHP书籍,因为无论出于何种原因,我都无法理解这一点。

我有几个型号:

  • 每个人都可以有很多工作
  • 每个工作都有一个分支,每个分支属于一个城市。

起初我依赖递归,但它不够自定义(显然)可以获得我想要的数据。

https://github.com/jwg2s/temp

我要么在输出数组中得到太多的数据,要么几乎没有任何数据......我只是无法想象这可以包含,如果我能看到我想要做的一个例子那就是大...

由于

1 个答案:

答案 0 :(得分:1)

既然你上下阅读了Cookbook,我将不会详细介绍你的所有基本细节,只是尝试解释如何使用可包含的。

您可以使用包含模型中find - 函数的可包含函数。可以从您的控制器或直接从您的模型 大多数时候我使用控制器,所以我会给你一个例子,你将如何从那里做到。我也尝试使用您的具体示例,因此您可以使用。

/app/controllers/people_controller.php

function index() {
    //I like to write a separate array for fields and contain
    $fields = array(
        'name',
        'birthday',
        'gender'
    );

    /* It's important to know, that the fields will not get included into the
     * contain-array unless it's an associated model! */
    $contain = array(
        'Job' => array(
            //within another array you define the next level of contain
            'Branch' => array(
                //you get the deal...
                'City'
            ),
            //if you only need specific fields you can define this here like this:
            'fields' => array('title', 'date', 'salary'),
            //or order them directly!
            'order' => 'Job.salary DESC'
        )
    );

    //we now to our find-fall with our 2 arrays for the fields and the contain
    //every option (like fields or order) can be used in the containable
    $people = $this->Person->find('all', array('contain' => $contain, 'fields' => $fields));
}

我希望这有助于你理解可以包含更多内容。