Php 按id列查找实体,\Phalcon\Mvc\Model::findFirst()给出的结果不正确
目前我有一个带有posts的表,每个posts都有一个id 目前,只有一个帖子存在,id=92 如果我执行以下代码,我将得到id=92的post,而不是false: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
$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);