我正在使用kohana ORM以便从数据库中获得一些结果。我的问题是:即使我已经查阅了文档,我也找不到只选择我感兴趣的列的方法。为了更明确,我有:
$sale_stock = Model::factory('product_type')
->where('product_type_id','=', $id )
-> find_all();
var转储它,它选择了我所有的“SELECT product_type。* from product_type where etc”。 但我想从salestock表中只选择'stock'字段。做find('stock')而不是find_all()返回一个weired对象...我哪里错了,我怎么能用kohana orm实际选择只有'stock'列呢?
谢谢你!答案 0 :(得分:5)
ORM方法find()
和find_all()
始终选择所有表列,因此有两种方法可以获取指定的字段:
$sale_stock = Model::factory('product_type') ->where('product_type_id','=', $id ) -> find_all(); // get array of id=>stock values $columns = $sale_stock->as_array('id', 'stock');
// model Model_Product_Type public function get_stocks($product_type_id) { return DB::select(array('stock')) ->from($this->_table_name) ->where('product_type_id', '=', $product_type_id) ->execute($this->_db); }
答案 1 :(得分:0)
我意识到这并不是你想要的,但我从Kohana文档中提取了以下信息......
$articles = ORM::factory('article')->select_list('id', 'title');
foreach ($articles as $id => $title)
{
// Display a list of links
echo html::anchor('articles/'.$id, $title);
}
// Display a dropdown list
echo form::dropdown('articles', $articles);
您可以将其视为折扣,两个字段的价格为一个。
当请求部分模型或合并模型字段时,ORM通常会返回“非标准”对象。这可以防止使用原始对象混淆操作(即,如果对象只包含8个字段中的2个,还有另外一个模型中的某些字段,那么如何保存对象?)。
如果你打印了这个对象,并告诉我它的外观......它可能正是你想要的。
答案 2 :(得分:0)
我知道这是一个老问题,但我发现可能更容易解决方案:
$sale_stock = ORM::factory('product_type')
->where( 'product_type_id','=', $id )
->find_all();
die($sale_stock->stock);