This article shows the implementation method of Yii using find findAll to find the specified field in the form of an example, and shares it with everyone for your reference. The specific method is as follows:
As we all know, the following method is used:
modelName::model() -> find() //找出的是一个对象 modelName::model() -> findALL() //找出的是一个对象集合的数组
I can find arrays of objects and object collections, so how do I find the data of the fields I need instead of all the fields? This is what I did before:
$criteria = new CDbCriteria; $criteria->select = 'username,id,email'; $criteria->order = 'id DESC'; $users = modelName::model()->findAll( $criteria );
I accidentally saw someone else writing this in the background. The method is very good:
$users = modelName::model()->findAll(array( 'select' =>array('username','id','email'), 'order' => 'id DESC', ));
After testing, it was found that it works, so find can also do this:
$user = modelName::model()->find(array( 'select' =>array('username','id','email'), 'order' => 'id DESC', 'condition' => 'id='.$id, ));
Of course, this is definitely not safe. You can also use the following method:
$users = $this->user->find(array( 'select'=>array('id','username','email'), 'order' => 'id DESC', 'condition' => 'state=:state AND id=:id', 'params' => array(':state'=>'1',':id' => '2'), ));
Similarly, you can also test it with findAll.
Conclusion:
This method can easily obtain the required data. Of course, you still need to new CDbCriteria when paging is needed.
I hope this article will be helpful to everyone using Yii for database programming.
Get the data you need. Here are some standard methods in Model to get the data you need: findAll string $conditions array $fields string $order int $limit int $page int $recursive [$conditions Type: string] Retrieve conditions , which is the where clause in sql, like this $conditions = "race = 'wookie' AND thermal_detonators > 3". [$fields Type: array] Retrieve properties, which are projections, specifying all the properties you wish to return. (Annotation: Here I did not use the pro-SQL name of field but the pro-object name of attribute. I believe that many PHPers are more familiar with the development model based on Sql and DTO, but one of the original intentions of introducing Model is to convert the relational database into Object operations, so the projection query should be understood as retrieving certain attributes of the object) [$order Type: string] The sorting attribute specifies the attribute name of order by [TODO: check whether the multiple order field be supported] [$limit Type: int ] Result set data entry limit [$page Type: int] Result set paging index, the default is to return the first page [$recursive Type: int] When recursive is set to an integer greater than 1, other objects associated with the model will be returned. (Annotation: If you have used an ORM tool like Hibernate, it is not difficult to understand that this attribute is the LazyLoad attribute, but it is not completely the same. The numerical value represents the number of levels of cascading queries, for example, user.country.city .address.id) find string $conditions array $fields string $order int $recursive The difference between the find method and the findAll method is that the findAll method returns all matching result sets, and the find method only returns the first result in the list.
The premise is that this attribute must be defined in the entity file corresponding to the database.