Models: Accessing Data in Java Creator Code 128A in Java Models: Accessing Data

Models: Accessing Data use none none encoding toreceive none on none .NET CF Inside our vie none none w file, we just iterated over the $books array and printed out the information we need. Now, visiting the URL http://localhost/data-access/ books/ should show us a page like the following:. More on Data Retrieval We have just s none for none een a very basic use of the built-in model method find() for retrieving data from a database table. The find() method is indeed very powerful, and we can accomplish complex queries using it. We will now learn more about the find() method and see how to perform complex queries through it.

We will also see how to work with some other data retrieval techniques that CakePHP offers.. More on find(). The find() met none for none hod is flexible and dynamic enough to achieve the result equivalent to any SQL SELECT query. As an example, to retrieve only the isbn, title and author_name fields of the first two books that have titles starting with the character "A" and that are sorted by their ISBNs in descending order, we would write the following SQL query:. SELECT `Book`. `isbn`, `Book`.`title`, `Book`.

`author_name` FROM `books` AS `Book` WHERE `Book`.`title` LIKE "A%" ORDER BY `Book`.`isbn` DESC LIMIT 2;.

[ 82 ]. 5 . In CakePHP, th none for none e equivalent query can be performed by calling its find() method like the following:. find( "all", a rray( "conditions" => array("Book.title" => "LIKE A%"), "fields" => array( "Book.isbn", "Book.

title", "Book.author_name" ), "order" => "Book.isbn DESC", "limit"=>2 ) );.

Prefixing cond none none itions with the model"s name (like, Book.title rather that just title) is always a good practice. Particularly, when we were fetching related model data (discussed in 5) and two or more columns of the result have the same field name.

Moreover, it improves clarity of the code.. The find() met hod takes two parameters: $type and $constraints. The first one $type is a string that defines the "type" of the query. $type can be set to one of the following:.

all: The none for none method returns all the records that matches the given conditions,. sorted by the given order and up to the given limit. given constraints. the query. first: The met none for none hod returns only the first record that matches the count: The method returns the total number of records returned by. As we saw in t he last example, we can specify other query constraints in the second parameter $constraints as an associative array. The $constraints associative array can have the following keys:. conditions none for none : An array of the conditions that will be applied to the WHERE clause of the query. Default is 1=1, which means no condition is applied. fields: An array of the fields to be returned by the query.

If nothing is. specified, it will return all the fields. This parameter is not applicable when the first parameter $type of the find function is set to count..

[ 83 ]. Models: Accessing Data order: A strin none for none g that defines the ORDER BY clause of the query. If order is not specified, there will be no ORDER BY clause added to the query. This parameter is also not applicable when the type of the function is count.

limit: An integer that specifies maximum number of records to return. If not. specified, the function will return all the records matching given conditions. Only applicable when the type is all..

offset: An int none for none eger that defines the offset of the first record to return. Default is 0. Pertinent only when the type is all.

. To understand this concept more clearly, we will now skim through some quick examples showing the usage of the find() method: 1. If we want to know the total number books that have title starting with the character "A", we would write the following code inside the BooksController:. $count = $this none for none ->Book->find("count", array("conditions" => array("Book.title" => "LIKE A%"));. It executes th e following SQL query:. SELECT COUNT(* none for none ) AS `count` FROM `books` AS `Book` WHERE `Book`.`title` LIKE "A%";. When the $type parameter of the find() method is set to count, the returned result is an integer. In this case, the $count variable may have the value 2. 2.

If we want to find the ISBN and title of the book with the biggest id, we would write the following code:. $book = $this- none for none >Book->find("first", array( "fields" => array("isbn", "title"), "order" => " DESC" ) );. It will execut e the following SQL statements:. SELECT `Book`. none for none `isbn`, `Book`.`title` FROM `books` AS `Book` WHERE 1 = 1 ORDER BY `Book`.

`created` DESC LIMIT 1;. [ 84 ].
Copyright © . All rights reserved.