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

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.

主站蜘蛛池模板: 班玛县| 兴义市| 黑山县| 湄潭县| 天祝| 上杭县| 全州县| 隆回县| 武穴市| 淅川县| 萨迦县| 芦溪县| 法库县| 黔西| 武功县| 酒泉市| 南康市| 抚宁县| 大英县| 新昌县| 毕节市| 东光县| 罗甸县| 枞阳县| 霸州市| 肇东市| 醴陵市| 顺义区| 新建县| 绥芬河市| 开平市| 禄丰县| 巩留县| 故城县| 翼城县| 会昌县| 土默特右旗| 隆回县| 曲阜市| 南召县| 天峨县|