Phalcon find with columns参数返回行而不是模型

时间:2016-07-14 22:53:34

标签: php models phalcon

当我使用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()的其他参数,例如conditionorderbind等。工作正常(返回模型)。

Phalcon 1.3.4

1 个答案:

答案 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
)