fetchOne()
方法的返回值是一个Solar_Sql_Model_Record对象。同样的,fetchAll()
或fetchAssoc()
方法的返回值是一个Solar_Sql_Model_Collection 。
记录对象继承自Solar_Struct
,Solar_Struct又实现了ArrayAccess
,、Countable
和IteratorAggregate
接口。这意味着,你几乎就可以把记录对象当成数组使用。
<?php // a single blog record, blog.id = 1 $item = $model->blogs->fetch(1); // print the name and value of each property foreach ($item as $col => $val) { $label = htmlspecialchars($col); $value = htmlspecialchars($val); echo "$label: $value<br />"; } // echo the ID as a property or as an array element echo $item->id . " is the same as " . $item['id'];
你也可以调用记录地象的任何方法;这可能是在您的域中实现记录级商业逻辑的方法。
和记录对象一样,集合对象也继承自Solar_Struct
。这也意味着,你几乎就可以把集合对象当成数组使用。
<?php
// a collection of blog records
$list = $model->blogs->fetchAll();
// print the title of each blog entry.
// note that $n is a sequential array key,
// *not* the primary key value.
foreach ($list as $n => $blog) {
echo "Primary key ID " . htmlspecialchars($blog->id)
. " is titled " . htmlspecialchars($blog->title)
. '<br />';
}
// how many records are in the collection?
$count = count($list);
// using fetchAssoc() will key the collection on the first
// column of the results. in this case, becasue 'id' is the
// first column, the array key and the primary key are the
// same thing.
$list = $model->blogs->fetchAssoc();
foreach ($list as $key => $blog) {
echo "Primary key ID " . htmlspecialchars($blog->id)
. " is the same as the assoc key " . htmlspecialchars($key)
. '<br />';
}
Note | |
---|---|
集合对象在实例化的时候会收集所有数据的记录对象,但是如果你不向它请求记录对象,它就不会创建记录对象。 |
集合对象提供了几个方法让你获取集合的整体信息。
getPrimaryVals()
-
返回一个由集合对象中所有记录的主键组成的数组。这不会创建记录对象;它只使用内部结果数组。
getColVals($colname)
-
返回一个由集合对象中某一字段的所有值构成的数组。这确实会创建记录对象;因为所请求的字段需要记录对象的魔术方法
__get()
计算求得。 getPagerInfo()
-
获取集合的页码信息数组。你在使用获取方法的时候,设置了
count_pages
参数,页码信息数组就是在这个时候定义的,之后便把它直接传递给Solar_View_Helper_Pager (显示分页链接的辅助类)。页码信息数组的键定义在Solar_Sql_Model_Collection::getPagerInfo()中。