当我使用Model::find()
响应是模型的结果集时,但是当我添加columns
参数来限制返回的列时,响应是行的结果集。
示例:
// Resultset of Models
$users = \Models\Users\Users::find();
// Resultset of Rows
$users = \Models\Users\Users::find([
'columns' => 'id, email'
]);
这让我无法调用模型方法。有没有办法在:: find()方法中使用具有列限制的模型的Resultset?我不确定,但这似乎是错误,因为Phalcon文档说:
虽然findFirst()直接返回被调用类的实例(当有数据要返回时),但find()方法返回Phalcon \ Mvc \ Model \ Resultset \ Simple。
使用columns
参数时,没有任何关于此规则的例外情况。
我还会注意到:: find()的其他参数,例如condition
,order
,bind
等。工作正常(返回模型)。
Phalcon 1.3.4
答案 0 :(得分:4)
这不是一个错误,它是预期的行为。 the docs中的信息向下滚动到参数表并阅读列的说明。
如果您需要使用模型方法或关系,则不应指定列。但是如果你的表现更好并且不需要模型关系,你应该使用Query Builder。
其余的find()参数,如condition,order e.t.c.会影响你使用模型方法的能力。
findFirst()方法也像find()方法一样工作。示例:
未指定列:
News::findFirst(3);
// Output
Models\News Object
(
...
指定列时
News::findFirst([
'columns' => 'id, created_at'
]);
// Output
Phalcon\Mvc\Model\Row Object
(
[id] => 1
[created_at] => 2016-02-02
)