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

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.

主站蜘蛛池模板: 湖南省| 通城县| 长治市| 晴隆县| 开化县| 玉溪市| 西平县| 舒城县| 湟中县| 农安县| 石屏县| 义马市| 江达县| 邢台县| 和林格尔县| 五原县| 山东| 盐源县| 桂东县| 阳城县| 武安市| 如东县| 顺昌县| 乐亭县| 大理市| 青浦区| 自治县| 普兰县| 峨眉山市| 庆城县| 屏南县| 岳池县| 涡阳县| 珠海市| 黎川县| 连州市| 芮城县| 遂溪县| 湛江市| 定陶县| 诸城市|