官术网_书友最值得收藏!

Modifying binding conditions for a find

This recipe shows how to use Containable to change the conditions used to fetch data related to a model through a binding.

Getting ready

We need to have Containable added to our models, and we also need some sample models and data to work with. Follow the recipe, Adding Containable to all models, and the Getting ready section of the recipe, Modifying binding parameters for a find.

How to do it...

If we want to obtain the first User record together with the published Article records that user owns, but ordered by latest articles first, and limiting some of the returned fields, we use the conditions binding setting:

$user = $this->User->find('first', array(
'contain' => array(
'Article' => array(
'fields' => array('Article.title'),
'conditions' => array( 'Article.published' => 1 )
)
)
));

Using our sample data, the preceding query will result in the following array structure:

array(
'User' => array(
'id' => '1',
'name' => 'John Doe',
'email' => 'john.doe@example.com',
),
'Article' => array(
array(
'title' => 'John\'s Post 1',
'user_id' => '1'
),
array(
'title' => 'John\'s Post 2',
'user_id' => '1'
),
array(
'title' => 'John\'s Post 4',
'user_id' => '1'
)
)
)

How it works...

The conditions binding setting is another binding parameter, such as those shown in the recipe, Modifying binding parameters for a find. As such, the Containable behavior uses the built-in bindModel() method defined in CakePHP's Model class to alter the binding conditions defined in the contain find operation.

主站蜘蛛池模板: 锦州市| 安仁县| 东乡族自治县| 安义县| 天全县| 兰考县| 澄江县| 红河县| 八宿县| 博罗县| 宁化县| 定州市| 景宁| 石城县| 沁阳市| 平陆县| 蚌埠市| 岳阳市| 鸡东县| 昌邑市| 盐源县| 沙河市| 河池市| 崇州市| 濉溪县| 德保县| 大石桥市| 盐津县| 嘉义市| 江川县| 长寿区| 江陵县| 龙口市| 嘉善县| 宜昌市| 东兰县| 辉县市| 高州市| 东莞市| 汾西县| 台北县|