首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel在使用有值的雄辩查询($column)时返回奇怪的输出

Laravel在使用有值的雄辩查询($column)时返回奇怪的输出
EN

Stack Overflow用户
提问于 2022-11-03 00:16:20
回答 1查看 29关注 0票数 0

我在使用value($column)时有一个奇怪的Laravel行为,并且使用了雄辩的查询

你好,我有一个雄辩的疑问:

代码语言:javascript
复制
$qr_id = Qr::where('qr_hash_id', '=', 'lb4jlzm5')->first();

输出是正确的:

代码语言:javascript
复制
dd($qr_id);
.
.
.....
  #escapeWhenCastingToString: false
  #attributes: array:12 [
    "id" => 44
    "qr_hash_id" => "lb4jlzm5"
.....
.
.

现在,如果我想得到ID列,通常我们会这样做

代码语言:javascript
复制
$qr_id = Qr::where('qr_hash_id', '=', 'lb4jlzm5')->first()->value('id');

我应该期望id值"44“。

但是返回的值是43

qr_hash_id排序是utf8_bin

如果我这么做

代码语言:javascript
复制
$qr_id = Qr::where('qr_hash_id', '=', 'lb4jlzm5')->first()->id;

没有值(),我就得到了正确的值。

这里少了什么?控件的SQL语句。

代码语言:javascript
复制
Qr::where('qr_hash_id', '=', 'lb4jlzm5')->first()

因为

代码语言:javascript
复制
Qr::where('qr_hash_id', '=', $request->input('qr_hash_id'))->first()->toSql();

返回

代码语言:javascript
复制
"select * from `qrs`"

没有地方条件也没有限制。

EN

回答 1

Stack Overflow用户

发布于 2022-11-03 12:49:24

作为@lagbox回答

value是一个查询生成器方法,它不是一个模型的方法。您正在重新查询数据库,并为查询的第一条记录获取该列的值.

使用它的方法是Qr::where(...)->value('id');

在第二个问题中,您已经执行了第一个查询,它添加了约束并执行了查询.在此之后调用toSql与调用全新查询生成器.的调用相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74296918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档