Php 按id列查找实体,\Phalcon\Mvc\Model::findFirst()给出的结果不正确

Php 按id列查找实体,\Phalcon\Mvc\Model::findFirst()给出的结果不正确,php,model,phalcon,Php,Model,Phalcon,目前我有一个带有posts的表,每个posts都有一个id 目前,只有一个帖子存在,id=92 如果我执行以下代码,我将得到id=92的post,而不是false: $post = NewsPost::findFirst(['id' => 1]); var_dump($post->id); // gives 92 这似乎是很奇怪的逻辑。。 可以使用什么方法按id检索post,如果没有此类实体,将返回false/throw exception?尝试以下方法: $post = New

目前我有一个带有posts的表,每个posts都有一个id

目前,只有一个帖子存在,id=92

如果我执行以下代码,我将得到id=92的post,而不是false:

$post = NewsPost::findFirst(['id' => 1]);
var_dump($post->id); // gives 92 
这似乎是很奇怪的逻辑。。 可以使用什么方法按id检索post,如果没有此类实体,将返回false/throw exception?

尝试以下方法:

$post = NewsPost::findFirst("id = 1");

我使用:

其中$id是主键。

使用

NewsPost::findFirst(['id = 1']);

你应使用:

NewsPost::findByid(1);
其中“id”可以替换为模型的任何属性。例如:

NewsPost::findByDescription('Description');
NewsPost::findByyourprop(yourpropval);
然后,您可以计数()返回值
count($result)
,以确定是否收到任何记录


注意:我还发现字符串搜索区分大小写。

顺便说一句,如果我定义NewsPost::findFirst(“id=1”),框架会正确转义id值吗?@true-Yes,因为模型被转换为PHQL,而PHQL总是被转义。但是,我个人更喜欢第二个选项和绑定参数。这可能有点过分了,因为两者都有相同的功能,但从视觉角度看,我知道我绑定了我的参数,因此正确地清理和逃避了它们。非常感谢您的回答,同意您的观点,第二种方式似乎更清楚:)我早就检查了正确的答案,但您的答案是正确的(也是最好的答案)。我以前也用过。
NewsPost::findFirst(1)
NewsPost::findByid(1);
NewsPost::findByDescription('Description');
NewsPost::findByyourprop(yourpropval);