CakePHP: grab only the data you need

When dealing with an abstraction that outputs dynamic SQL “behind your back”, it’s often easy to forget that some of the queries are… too greedy and grab unneeded data. Here is how to ask for less data, using CakePHP.

Today, I listed only name and id fields of a Model, and to restrict the findAll() to those things:

`$data = $this->Thing->findAll( aa("Thing.user_id", $user_id), a("id", "name"), null, null, null, -1 );`

Breaking down the call, we have:

aa() is a CakePHP convenience function to make an associative array. Odd parameters are keys, even params values. The parameters here creates a WHERE clause that matches the current user’s Things.

a() does the same for regular arrays. The params list the two fields we need returned.

A couple of null settings, and then the crucial -1, which turns off the Model associations completely.

Grab less data!

Update: here is how to use unbindModel. First take a look at the Thing model definition, courtesy of Mladen Mihajlovic:


 array(
      ‘className’ => ‘AnotherThing’
    ),
    ‘SomeOtherThing’ => array(
      ‘className’ => ‘SomeOtherThing’
    ),
    ‘YetAnotherThing’ => array(
      ‘className’ => ‘YetAnotherThing’
    )
  );
}
?>

Now, in our controller, before calling findAll, we remove two of the associated Models:


$this->Thing->unbindModel( array( "hasMany" => array( "AnotherThing", "SomeOtherThing" ) ) );

[tags]cakephp[/tags]

Calling an XML-RPC method (PHP, Ruby)

Calling web services. Great fun when it works. Thanks to XML-RPC’s simplicity, it’s quite easy to cobble together a working client. Here is me using the Technorati “ping” service, which tells them about the Copenhagen Ruby Brigade’s weblog being updated. And then, prints the result.

My PHP take on this looks klutzy. But the request gets encoded smartly. cURL takes a lot parameters to get running. I write the appropriate headers myself, there.

Simple XML-RPC in PHP

In Ruby’s standard library, there is a library to do these things. Exciting.

Even simpler XML-RPC in Ruby

[tags]technorati,xmlrpc,ruby,php,curl[/tags]

List of local geek communities (work-in-progress)

I talked with a local PHP developer today, who’d seen my blog, and we talked some CakePHP, frameworks, servers, the general state of scripting languages, and so forth. And then we came to the subject of local communities, where developers meet up and talk shop.

And, as a Copenhagener, I don’t know very much about that. There are these two that I know of:

Is there a PHP club? A Perl club? What other communities for developers have meetings in the Copenhagen area? Are you a member? Are these communities active? Please tell about it here.